package jnpf.cultivate.v2.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.entity.cultivate.CultivateIdentifyApply;
import jnpf.entity.cultivate.CultivatePositionCourseLogEntity;
import jnpf.model.cultivate.po.exam.FtbCultivateExamUser;
import jnpf.model.cultivate.po.position.FtbCultivatePositionLog;

import java.util.List;

/**
 * 岗位学习完成记录表服务接口
 */
public interface FtbCultivatePositionLogService extends IService<FtbCultivatePositionLog> {
    /**
     * 根据条件保存或更新用户职位学习记录
     * 该方法会根据传入的用户ID、职位学习ID等条件来决定是保存新记录还是更新现有记录
     *
     * @param userId          用户ID，用于标识操作的用户
     * @param positionLearnId 职位学习ID，用于标识具体的职位学习记录
     * @param postId          职位ID，关联到具体的职位信息
     * @param gradeId         年级ID，表示用户所在的年级信息
     * @param courseId        课程id，表示用户所在的年级信息
     */
    void completePositionCourse(String userId, String positionLearnId, String postId, String gradeId, String courseId);

    /**
     * 查询用户已完成的职位学习记录
     *
     * @param userId 用户ID，用于查询该用户已完成的职位学习记录
     * @return 返回一个包含已完成职位学习记录的列表
     */
    List<FtbCultivatePositionLog> queryMyCompletePosition(String userId);

    List<FtbCultivatePositionLog> batchQueryCompletePosition(List<String> currUserIds);

    /**
     * 职位学习完成
     *
     * @param userId          用户ID
     * @param positionLearnId 职位学习ID
     * @param postId          职位ID
     * @param gradeId         年级ID
     * @param tenantId        租户ID
     */
    void completePosition(String userId, String positionLearnId, String postId, String gradeId, String tenantId);

    /**
     * 查询用户是否完成职位学习
     *
     * @param userId          用户ID
     * @param positionLearnId 职位学习ID
     * @param postId          职位ID
     * @param gradeId         年级ID
     * @param tenantId        租户ID
     * @return 返回一个布尔值，表示用户是否完成职位学习
     */
    boolean selectIsCompletePosition(String userId, String positionLearnId, String postId, String gradeId, String tenantId);

    CultivatePositionCourseLogEntity queryIsTriggerExam(String positionLearnId, String userId, String courseId, String gradeId);

    void recordUserExamId(String positionLearnId, String userId, String courseId,String gradeId, FtbCultivateExamUser ftbCultivateExamUser);

    void recodePositionCourseExam(String userId, String examId, String userExamId, Integer status);

    void recordUserIdentificationId(String positionLearnId, String userId, String courseId, String gradeId,CultivateIdentifyApply cultivateIdentifyApply);

    void recodePositionCourseIdentify(String userId, String identityId, String userIdentifyId, Integer status, Integer userIdentifyStatus);

    /**
     * 根据用户ID和学习地图ID查询岗位学习课程记录
     *
     * @param userId      用户ID
     * @param postLearnId 学习地图ID（岗位学习ID）
     * @return 岗位学习课程记录列表
     */
    List<CultivatePositionCourseLogEntity> queryByUserIdAndPostLearnId(String userId, String postLearnId);
}