package jnpf.cultivate.service;

import jnpf.base.vo.PageListVO;
import jnpf.exception.HandleException;
import jnpf.model.cultivate.dto.learn.FtbCultivateLearnTaskListDto;
import jnpf.model.cultivate.vo.course.app.FtbAppTaskCountVO;
import jnpf.model.cultivate.vo.course.app.FtbGlobalCurriculumAppVO;
import jnpf.model.cultivate.vo.learn.FtbCultivateLearnTaskExamInfoVO;
import jnpf.model.cultivate.vo.learn.FtbCultivateLearnTaskIdentificationInfoVO;
import jnpf.model.cultivate.vo.learn.FtbCultivateLearnTaskInfoForAppVO;
import jnpf.model.cultivate.vo.learn.FtbCultivateMyLearnTaskListVO;

import java.util.List;
import java.util.Map;

/**
 * @Author: peng.hao
 * @create: 2024/9/11:14:50
 */
public interface FtbCultivateMyLearnTaskInfoService {

    /**
     * 培训任务列表
     */
    PageListVO<FtbCultivateMyLearnTaskListVO> taskList(FtbCultivateLearnTaskListDto taskListDto);
    /**
     * 任务课程列表
     *
     * @param taskId     任务主键ID(必传)
     * @param compulsory
     */
    List<FtbGlobalCurriculumAppVO> taskCourseList(String taskId, String userId, Integer compulsory) throws HandleException;

    /**
     * 任务详情(基本信息)
     * @param taskId 任务id
     */
    FtbCultivateLearnTaskInfoForAppVO getLearnTaskInfoForApp(String taskId);
    /**
     * 立即完成
     */
    void completeTask(String taskId);
    /**
     * 任务考试列表
     * @param taskId 任务主键ID(必传)
     */
    List<FtbCultivateLearnTaskExamInfoVO> taskExamList(String taskId, String userId);
    /**
     * 任务实操鉴定列表
     * @param taskId 任务主键ID(必传)
     */
    List<FtbCultivateLearnTaskIdentificationInfoVO> taskIdentificationList(String taskId, String userId);

    /**
     * 更新用户完成时间
     * @param taskId 任务id
     * @param userId 用户主键ID
     * @param source  0:课程 1：考试 2：鉴定
     */
    void updateUserFinishTime(String taskId, String userId,Integer source);

    /**
     * 获取任务列表总数
     * @param keyWords 任务名称
     * @return
     */
    Map<String,Integer> taskListCount( String keyWords);

    /**
     * 查询任务数量
     * @param taskId 任务id
     * @param userId 用户ID
     * @return
     */
    FtbAppTaskCountVO taskCourseNum(String taskId, String userId);
}
