package com.keao.edu.user.service;

import com.keao.edu.common.page.PageInfo;
import com.keao.edu.common.service.BaseService;
import com.keao.edu.user.dto.ExaminationBasicDto;
import com.keao.edu.user.entity.ExaminationBasic;
import com.keao.edu.user.enums.ExamStatusEnum;
import com.keao.edu.user.page.ExaminationQueryInfo;

public interface ExaminationBasicService extends BaseService<Long, ExaminationBasic> {

    /**
     * @describe 创建考级项目基本信息
     * @author Joburgess
     * @date 2020.06.18
     * @param examinationBasic:
     * @return com.keao.edu.user.entity.ExaminationBasic
     */
    ExaminationBasic addExaminationBasic(ExaminationBasic examinationBasic);

    void updateExam(ExaminationBasic examinationBasic, Integer operatorId);

    /**
     * @describe 更新考级项目状态
     * @author Joburgess
     * @date 2020.06.19
     * @return void
     */
    void updateExamStatus();

    /**
     * @describe 考级项目结束提醒，提醒确认结果
     * @author Joburgess
     * @date 2020.07.27
     * @return void
     */
    void examEndRemind();

    /**
     * @describe
     * @author Joburgess
     * @date 2020.07.13
     * @param examId:
     * @param statusEnum:
     * @return
     */
    void updateExamBasicStatus(Long examId, ExamStatusEnum statusEnum, Integer operatorId);

    /**
     * @describe 获取考级项目
     * @author Joburgess
     * @date 2020.06.27
     * @param queryInfo:
     * @return com.keao.edu.common.page.PageInfo<com.keao.edu.user.dto.ExaminationBasicDto>
     */
    PageInfo<ExaminationBasicDto> findExaminationBasics(ExaminationQueryInfo queryInfo);

    /**
     * @describe 获取指定的考级项目
     * @author Joburgess
     * @date 2020.06.27
     * @param examId:
     * @return com.keao.edu.user.dto.ExaminationBasicDto
     */
    ExaminationBasicDto getExaminationBasic(Integer examId);

    /**
     * @describe 关闭考级项目
     * @author Joburgess
     * @date 2020.06.19
     * @param examId: 考级项目编号
     * @param reason: 关闭原因
     * @return void
     */
    void closeExam(Integer organId, Integer examId, String reason);

    /**
     * 获取考级项目信息
     * @param examId
     * @return
     */
    ExaminationBasic getInfo(Integer examId);

}
