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

import com.ym.mec.biz.dal.dto.PracticeGroupDto;
import com.ym.mec.biz.dal.entity.PracticeGroup;
import com.ym.mec.biz.dal.entity.VipGroup;
import org.apache.ibatis.annotations.Param;

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

public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, PracticeGroup> {

    /**
     * @describe 获取学生指定日期内预约的陪练课
     * @author Joburgess
     * @date 2020/1/31
     * @param userId: 用户编号
     * @param startDate: 开始时间
     * @param endDate: 结束时间
     * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
     */
    List<PracticeGroup> getUserPracticeCoursesWithDateRange(@Param("userId") Integer userId,
                                                            @Param("startDate") Date startDate,
                                                            @Param("endDate") Date endDate);

    /**
     * @describe 统计用户的申请记录
     * @author Joburgess
     * @date 2020/2/3
     * @param userId:
     * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
     */
    int countUserPracticeApplyRecord(@Param("userId") Integer userId);

    /**
     * count陪练课列表数量
     * @param params
     * @return
     */
    int countPracticeGroupByOrgan(Map<String, Object> params);

    /**
     * 获取陪练课列表
     * @param params
     * @return
     */
    List<PracticeGroupDto> findAllByOrgan(Map<String, Object> params);

    /**
     * 获取已上课程数量
     * @param practiceGroupIds
     * @return
     */
    List<Map<Long, Integer>> countPracticeGroupOverCourse(List<String> practiceGroupIds);
}
