package jnpf.cultivate.v2.service;


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

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

/**
 * 任务学习服务接口
 */
public interface V2CultivateTaskStudyService {


    /**
     * 处理任务学习
     *
     * @param message 培训信息
     */
    void dealTaskCourseStudy(CultivateMqDTO message);


    /**
     * 处理任务考试
     *
     * @param message 培训信息
     */
    void dealTaskExamStudy(CultivateMqDTO message);

    /**
     * 处理任务鉴定
     *
     * @param message 培训信息
     */
    void dealTaskIdentityStudy(CultivateMqDTO message);


    /**
     * 处理任务练习
     *
     * @param message 培训信息
     */
    void dealTaskPracticeStudy(CultivateMqDTO message);


    void dealTaskStudyItem(UserBoundVO userPrimaryBoundOne, String taskId, String tenantId);

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

    FtbCultivateExamUser checkAndTriggerExam(String userId, String taskId, FtbCultivateLearnTaskPhase phaseEntity, List<String> examIds, Map<String, FtbCultivateExamUser> userExamStatusMap, String tenantId);
}
