package com.keao.edu.user.service;


import com.keao.edu.common.page.PageInfo;
import com.keao.edu.common.page.QueryInfo;
import com.keao.edu.common.service.BaseService;
import com.keao.edu.user.dto.*;
import com.keao.edu.user.entity.ExamRegistration;
import com.keao.edu.user.enums.StudentRegistrationStatusEnum;
import com.keao.edu.user.page.ApplyListQueryInfo;
import com.keao.edu.user.page.ExamRecordQueryInfo;
import com.keao.edu.user.page.ExamRegistrationQueryInfo;

import java.util.Map;

public interface ExamRegistrationService extends BaseService<Long, ExamRegistration> {

   Map<String,Object> addRegistration(ExamRegistration examRegistration) throws Exception;

   /**
    * @describe 查询考级项目报名学员
    * @author Joburgess
    * @date 2020.06.28
    * @param queryInfo:
    * @return com.keao.edu.common.page.PageInfo<com.keao.edu.user.entity.ExamRegistration>
    */
   PageInfo<ExamRegistrationRoomDto> queryExamRegistrationStudents(ExamRegistrationQueryInfo queryInfo);

   /**
    * @describe 更新报名状态
    * @author Joburgess
    * @date 2020.07.24
    * @param registId:
    * @param status:
    * @param memo:
    * @return void
    */
   void updateExamRegistrationStatus(Long registId, StudentRegistrationStatusEnum status, String memo);

   /**
    * @describe 更新考级报名信息
    * @author Joburgess
    * @date 2020.07.24
    * @param examRegistration:
    * @return void
    */
   void updateExamRegistration(ExamRegistration examRegistration);

   /**
    * @describe 统计招生信息
    * @author Joburgess
    * @date 2020.06.30
    * @param organId:
    * @return com.keao.edu.user.dto.ExamRegistrationStatisticsDto
    */
   ExamRegistrationStatisticsDto getExamRegistrationStaticsInfo(Integer organId, Integer examId);

   /**
    * 获取报考列表
    * @param queryInfo
    * @return
    */
   PageInfo<ExamRegistrationDto> applyList(ApplyListQueryInfo queryInfo);

   /**
    * 考试记录
    * @param queryInfo
    * @return
    */
   PageInfo<StudentExamListDto> examList(ExamRecordQueryInfo queryInfo);


   /**
    * 获取报名信息
    * @param examRegistrationId
    * @return
    */
   ExamRegistrationDto getExamRegistration(Long examRegistrationId);

   /**
    * 重新支付
    * @param userId
    * @param orderNo
    * @return
    */
   Map<String,Object> repay(Integer userId,String orderNo) throws Exception;

   /**
    * 学生端考级曲库考试列表
    * @param queryInfo
    * @return
    */
   PageInfo<StudentBaseExamsDto> studentBaseExams(QueryInfo queryInfo);
}
