package jnpf.cultivate.service;

import jnpf.model.cultivate.dto.learn.FtbCultivateLearnAllocationDTO;
import jnpf.model.cultivate.dto.learn.FtbCultivateLearnTaskInfoDto;
import jnpf.model.cultivate.vo.learn.FtbLearnQueryTaskDetailsEditingVO;

import java.util.List;

/**
 * 学习任务详情信息保存接口
 *
 * @Author: peng.hao
 * @create: 2024/9/9:14:47
 */
public interface FtbCultivateLearnTaskInfoContentService {

    /**
     * 中止指定任务
     *
     * @param taskId 任务ID，用于标识需要中止的任务
     */
    void abort(String taskId);

    /**
     * 保存学习任务列表
     *
     * @param taskInfoDto
     */
    void saveLearnTaskList(FtbCultivateLearnTaskInfoDto taskInfoDto);

    /**
     * 更新学习任务列表
     *
     * @param taskInfoDto 学习任务信息DTO，包含需要更新的学习任务数据
     */
    void updateLearnTaskList(FtbCultivateLearnTaskInfoDto taskInfoDto);

    /**
     * 获取学习任务分配列表
     *
     * @param taskId 任务ID，用于标识特定的学习任务
     * @return 返回一个字符串列表，包含任务的分配详情
     */
    List<String> getLearnTaskAllocationList(String taskId);

    /**
     * 查询未完成的人员根据任务id
     * @param taskId 任务id
     * @return
     */
    public List<String> queryUserListForTaskNoComplete(String taskId) ;

    /**
     * 分配任务
     *
     * @param allocationDTO 分配数据传输对象，包含分配培养学习所需的各项数据
     */
    void allocation(FtbCultivateLearnAllocationDTO allocationDTO);

    /**
     * 删除指定ID的任务
     *
     * @param id 任务的唯一标识符
     */
    void deleteTask(String id);

    /**
     * 在编辑过程中查询学习任务详情
     *
     * @param id 任务的唯一标识符
     * @return FtbLearnQueryTaskDetailsEditingVO 返回包含任务详细信息的对象
     */
    FtbLearnQueryTaskDetailsEditingVO queryTaskDetailsWhileEditing(String id);

}
