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

import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
import com.ym.mec.biz.dal.entity.Subject;
import com.ym.mec.biz.dal.enums.YesOrNoEnum;
import com.ym.mec.common.dal.BaseDAO;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SubjectDao extends BaseDAO<Integer, Subject> {

    /**
     * 通过乐团编号查询科目列表
     * @param musicGroupId
     * @return
     */
    List<Subject> findSubByMusicGroupId(Integer musicGroupId);

    /**
     * 通过乐团收费方式，获取默认的声部列表
     * @param chargeTypeId
     * @return
     */
    List<Subject> findSubByChargeType(Integer chargeTypeId);

    /**
     * 根据科目code查科目
     * @param code
     * @return Subject
     */
    Subject findByCode(@Param("code") String code);

    /**
     * 根据父级id查询子级列表
     * @param parentId
     * @return
     */
    List<Subject> findByParentId(@Param("parentId") String parentId, @Param("delFlag") YesOrNoEnum delFlag);

    /**
     * 通过乐团收费类型，获取默认的声部列表
     * @param musicGroupId
     * @return
     */
    List<Subject> findDefaultSubByGroupId(Integer musicGroupId);

    /**
     * 通过乐团编号获取声部列表以及声部报名、缴费、计划人数
     * @param musicGroupId
     * @return
     */
    List<SubjectApplyDetailDto> findSubApplyDetail(Integer musicGroupId);

    /**
     * 根据声部id字符串查询
     * @param subIds
     * @return
     */
    List<String> findBySubIds(String subIds);
}