package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
import com.ym.mec.biz.dal.dto.CourseScheduleDto;
import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
import com.ym.mec.biz.dal.entity.CourseSchedule;
import com.ym.mec.common.service.BaseService;
import org.apache.ibatis.annotations.Param;

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

public interface CourseScheduleService extends BaseService<Long, CourseSchedule> {

    /**
     * @Author: Joburgess
     * @Date: 2019/9/10
     * 根据课程ID获取当前课程的信息
     */
    TeacherAttendanceDto getCurrentCourseDetail(Long courseID);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/17
     * 批量插入课程计划
     */
    void batchAddCourseSchedule(List<CourseSchedule> courseSchedules);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/17
     * 批量更新课程计划
     */
    void batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules,Long musicGroupID);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/17
     * 根据日期获取当日排课信息
     */
    List<CourseScheduleDto> getCourseSchedulesWithDate(Date classDate);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/17
     * 根据月份获取乐团在该月有课的日期
     */
    List<Date> getCourseScheduleDateByMonth(Long musicGroupID, Date month);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/23
     * 课时调整
     */
    void classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/24
     * 课程交换
     */
    void courseSwap(Long courseScheduleId1,Long courseScheduleId2);

    /**
     * 获取班级的课程计划
     *
     * @param classGroupList
     * @return
     */
    List<CourseSchedule> findClassGroupCourseSchedules(List classGroupList);
}