package jnpf.cultivate.v2.service;


import jnpf.model.cultivate.po.exam.FtbCultivateExamUser;
import jnpf.model.cultivate.v2.mq.CultivateMqDTO;
import jnpf.model.cultivate.v2.promotion.vo.V2CultivatePostAndGradeVoExt;
import jnpf.permission.vo.v2.user.UserBoundVO;

import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Map;

/**
 * 岗位学习服务接口
 */
public interface V2CultivatePostStudyService {


    /**
     * 处理岗位学习
     *
     * @param message 培训信息
     */
    void dealPositionCourseStudy(CultivateMqDTO message);

    /**
     * 处理岗位考试
     *
     * @param message 培训信息
     */
    void dealPositionExamStudy(CultivateMqDTO message);

    /**
     * 处理岗位
     *
     * @param message 培训信息
     */
    void dealPositionReCheckStudy(CultivateMqDTO message);


    /**
     * 处理岗位鉴定
     *
     * @param message 培训信息
     */
    void dealPositionIdentityStudy(CultivateMqDTO message);

    /**
     * 处理岗位练习
     *
     * @param message 培训信息
     */
    void dealPositionPracticeStudy(CultivateMqDTO message);


    /**
     * 处理通用课程学习
     *
     * @param message 培训信息
     */
    void dealCommonCourseStudy(CultivateMqDTO message);

    void dealPositionExamStudyItem(UserBoundVO userBoundVO, String examId, V2CultivatePostAndGradeVoExt itemVo, String tenantId);

    void dealPositionReCheckStudyItem(UserBoundVO userBoundVO, V2CultivatePostAndGradeVoExt itemVo, String tenantId);

    void dealPositionIdentityStudyItem(UserBoundVO userBoundVO, String identityId, V2CultivatePostAndGradeVoExt itemVo, String tenantId);

    void dealPositionPracticeStudyItem(UserBoundVO userBoundVO, String practiceId, V2CultivatePostAndGradeVoExt itemVo, String tenantId);

    void prePositionCourseStudy(String userId, @NotBlank(message = "课程主键id不能为空") String courseId, String postLearnId,String gradeId, String tenantId);

    String checkExamStatusReturnUserExamId(String userId, String positionLearnId, List<String> examIds,
                                           Map<String, FtbCultivateExamUser> userExamStatusMap, String courseId, String gradeId,String tenantId);

    String preCommonCourseStudy(String userId, String courseId, String tenantId);

    Boolean checkIsTriggerPositionCertificate(String userId, String certificateId, String positionLearnId, String postId, String gradeId, String courseId);
}
