package com.ym.mec.biz.dal.dao;

import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
import com.ym.mec.biz.dal.dto.StudentFeeDto;
import com.ym.mec.biz.dal.entity.StudentRegistration;
import com.ym.mec.common.dal.BaseDAO;

import org.apache.ibatis.annotations.Param;

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

public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistration> {

    /**
     * 获取乐团学员报名详情
     *
     * @param params
     * @return
     */
    List<StudentApplyDetailDto> queryStudentDetailPage(Map<String, Object> params);

    /**
     * 获取乐团学员报名详情条数
     *
     * @param params
     * @return
     */
    int queryStudentDetailCount(Map<String, Object> params);

    /**
     * 根据乐团编号和声部获取缴费学员人数
     *
     * @param musicGroupId
     * @param subjectId
     * @return
     */
    Integer countPayNum(@Param("musicGroupId") Integer musicGroupId, @Param("subjectId") Integer subjectId);

    /**
     * 学生报名缴费金额详情
     *
     * @param studentId
     * @param musicGroupId
     * @return
     */
    StudentFeeDto queryFeeDetail(Integer studentId, String musicGroupId);


    /**
     * 获取乐团声部未分配的班级的学生
     *
     * @param musicGroupId    乐团id
     * @param actualSubjectId 科目id
     * @return
     */
    List<StudentRegistration> getNoClassStuBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);

    /**
     * 获取乐团声部未分配学生数
     *
     * @param musicGroupId
     * @param actualSubjectId
     * @return
     */
    Integer getNoClassStuCountBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);

    /**
     * 根据乐团id和user_id 更新
     * @param studentRegistration
     * @return
     */
    Integer updateByUserIdAndMusicGroupId(@Param("studentRegistration") StudentRegistration studentRegistration);
}