package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.model.cultivate.po.question.FtbCultivateQuestionBank;
import jnpf.model.cultivate.req.paper.PaperConfigReq;
import jnpf.model.cultivate.req.questionbank.AddQuestionBankReq;
import jnpf.model.cultivate.req.questionbank.EditQuestionBankReq;
import jnpf.model.cultivate.req.questionbank.QueryQuestionBankReq;
import jnpf.model.cultivate.req.questionbank.UnbindQuestionBankReq;
import jnpf.model.cultivate.resp.CanDeleteMsg;
import jnpf.model.cultivate.resp.QuestionBankVo;

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

public interface FtbCultivateQuestionBankService extends IService<FtbCultivateQuestionBank> {

    /**
     * 分页查询题库列表
     * @param req
     * @return
     */
    PageInfo<QuestionBankVo> getPageList(QueryQuestionBankReq req);

    /**
     * 查询题目详情
     * @param id 题库ID
     * @return
     */
    QuestionBankVo getInfo(String id);

    /**
     * 插入题库
     * @param addQuestionBank
     */
    void insertData(AddQuestionBankReq addQuestionBank);

    /**
     * 修改题库
     * @param req
     */
    void updateData(EditQuestionBankReq req);

    /**
     * 删除题库
     * @param id 题库ID
     */
    void deleteData(String id);

    /**
     * 解除题库和课程的绑定
     * @param req
     */
    void unbind(UnbindQuestionBankReq req);


    /**
     * 检测题库是否可以删除
     *
     * @param questionBankId 题库ID
     * @return
     */
    CanDeleteMsg checkQuestionBankCanDelete(String questionBankId);

    /**
     * 统计分析题库中各种题目类型的数量
     * @param questionBankId 题库ID
     * @return
     */
    Map<String, PaperConfigReq.QuestionNum> analysQuestionCount(String questionBankId);

    /**
     * 删除题库和课程的关联关系
     *
     * @param courseIds 课程ID集合
     */
    void deleteQuestionBankRelationCourse(List<String> courseIds);
}
