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.BaseUserInfoDto;
import com.keao.edu.user.dto.ExamTeacherSalaryDto;
import com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo;
import com.keao.edu.user.dto.TeacherDto;
import com.keao.edu.user.entity.ExamTeacherSalary;
import com.keao.edu.user.page.ExamTeacherSalaryQueryInfo;

import java.util.List;

public interface ExamTeacherSalaryService extends BaseService<Long, ExamTeacherSalary> {

    /**
     * @describe 结算指定考试中教师的薪酬
     * @author Joburgess
     * @date 2020.07.01
     * @param examId:
     * @return void
     */
    void teacherSalarySettlementWithExam(Long examId);

    /**
     * @describe
     * @author Joburgess
     * @date 2020.07.08
     * @param queryInfo:
     * @return com.keao.edu.common.page.PageInfo<ExamTeacherSalaryDto>
     */
    PageInfo<ExamTeacherSalaryDto> queryExamTeacherSalary(ExamTeacherSalaryQueryInfo queryInfo);

    /**
     * @describe 删除考级教室分润设置
     * @author Joburgess
     * @date 2020.07.02
     * @param examTeacherSalaryId:
     * @return void
     */
    void deleteExamTeacherSalary(Long examTeacherSalaryId);

    /**
     * @describe 新增考级项目教师
     * @author Joburgess
     * @date 2020.07.02
     * @param examId:
     * @param teacherIdsStr:
     * @return void
     */
    void addExamTeacherSalary(Long examId, String teacherIdsStr);

    /**
     * @describe 更新
     * @author Joburgess
     * @date 2020.07.20
     * @param examTeacherSalary:
     * @return void
     */
    void updateExamTeacherSalary(ExamTeacherSalary examTeacherSalary);

    /**
     * @describe 获取指定考级项目可排考教师
     * @author Joburgess
     * @date 2020.07.02
     * @param examId:
     * @return java.util.List<com.keao.edu.user.dto.BaseUserInfoDto>
     */
    List<BaseUserInfoDto> getExamTeachers(Integer examId);

    /**
     * @describe 获取与考级项目无关的教师
     * @author Joburgess
     * @date 2020.07.02
     * @param queryInfo:
     * @return java.util.List<com.keao.edu.user.entity.Teacher>
     */
    PageInfo<TeacherDto> getUnRelatedWithExamTeachers(ExamTeacherSalaryQueryInfo queryInfo);

    /**
     * @describe 获取考级项目关联教师统计信息
     * @author Joburgess
     * @date 2020.07.08
     * @param examId:
     * @return com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo
     */
    ExamTeacherSalaryStaticsInfo getExamTeacherSalaryStaticsInfo(Integer examId);
}
