package com.xjrsoft.module.assessment.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseService;
import com.xjrsoft.module.assessment.dto.AddAssessmentTemplatePlanDto;
import com.xjrsoft.module.assessment.dto.AssessmentPlanAnswerPageDto;
import com.xjrsoft.module.assessment.dto.AssessmentPlanAnswerStudentDto;
import com.xjrsoft.module.assessment.dto.AssessmentPlanSubmitDto;
import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanPageDto;
import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanSureDto;
import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanDto;
import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanTimeDto;
import com.xjrsoft.module.assessment.entity.AssessmentTemplatePlan;
import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo;
import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentPageVo;
import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentVo;
import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerTeacherPageVo;
import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanPageVo;
import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanQuestionVo;
import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanResultVo;

import java.util.List;

/**
* @title: 考核计划
* @Author dzx
* @Date: 2024-04-01
* @Version 1.0
*/

public interface IAssessmentTemplatePlanService extends MPJBaseService<AssessmentTemplatePlan> {
    /**
    * 新增
    *
    */
    Boolean add(AddAssessmentTemplatePlanDto dto);

    /**
    * 更新
    *
    */
    Boolean update(UpdateAssessmentTemplatePlanDto dto);

    Boolean updateTime(UpdateAssessmentTemplatePlanTimeDto dto);

    /**
    * 删除
    *
    * @param ids
    * @return
    */
    Boolean delete(List<Long> ids);

    /**
     * 分页查询
     */
    Page<AssessmentTemplatePlanPageVo> getPage(Page<AssessmentTemplatePlanPageVo> page, AssessmentTemplatePlanPageDto dto);

    /**
     * 考核答题分页查询(学生端)
     */
    Page<AssessmentPlanAnswerStudentPageVo> getStudentPage(Page<AssessmentPlanAnswerStudentPageVo> page, AssessmentPlanAnswerPageDto dto);

    /**
     * 考核答题分页查询(教师端)
     */
    Page<AssessmentPlanAnswerTeacherPageVo> getTeacherPage(Page<AssessmentPlanAnswerTeacherPageVo> page, AssessmentPlanAnswerPageDto dto);

    /**
     * 班主任确认
     * @return
     */
    Boolean sure(AssessmentTemplatePlanSureDto dto);

    AssessmentTemplatePlanQuestionVo getQuestionsById(Long id);

    Boolean saveAnswer(AssessmentPlanSubmitDto dto);

    List<AssessmentTemplatePlanPageVo> getMobilePage(AssessmentTemplatePlanPageDto dto);


    List<AssessmentPlanAnswerStudentVo> getAnswerStudent(AssessmentPlanAnswerStudentDto dto);

    List<Long> getSemesterClass(Long id);

    List<AssessmentPlanAnswerClassResultVo> getClassResult(Long id);

    AssessmentTemplatePlanResultVo getQuestionResult(Long id);


    Boolean sendMsg(AssessmentTemplatePlanSureDto dto);
}
