package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.DemoGroupApplyDto;
import com.ym.mec.biz.dal.dto.EducationDemoGroupListDto;
import com.ym.mec.biz.dal.entity.DemoGroup;
import com.ym.mec.biz.dal.page.StudentDemoGroupQueryInfo;
import com.ym.mec.biz.dal.page.TeacherManageDemoGroupQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

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

public interface DemoGroupService extends BaseService<Long, DemoGroup> {

    /**
     * @Author: Joburgess
     * @Date: 2019/9/25
     * 试听课申请
     */
    void demoGroupApply(DemoGroupApplyDto demoGroupApplyDto);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/25
     * 获取试听课列表
     */
    PageInfo queryStudentDemoGroups(StudentDemoGroupQueryInfo queryInfo);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/25
     * 试听课订阅
     */
    void demoGroupSubscribe(Long demoGroupId,Long coursePlanId);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/26
     * 根据教师编号获取试听课信息
     */
    DemoGroup getDemoGroupByTeacherId() throws Exception;

    /**
     * @Author: Joburgess
     * @Date: 2019/9/26
     * 获取教师试听课安排
     */
    PageInfo findTeacherDemoGroups(TeacherManageDemoGroupQueryInfo queryInfo);

    /**
     * @describe
     * @author Joburgess
     * @date 2019/11/29
     * @param teacherID: 教师编号
     * @return java.util.List<com.ym.mec.biz.dal.dto.EducationDemoGroupListDto>
     */
    List<EducationDemoGroupListDto> findDemoGroupStartClassTimesWithWeekByTeacherId(Long teacherID);

    /**
     * @describe 获取试老师指定时间段内的试听课
     * @author Joburgess
     * @date 2019/11/4
     * @param teacherId: 教师编号
     * @param startTime: 开始时间
     * @param endTime: 结束时间
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String,Object> findByTeacherId(Integer teacherId, Date startTime, Date endTime);
}
