package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
import com.ym.mec.biz.dal.entity.CourseHomework;
import com.ym.mec.biz.dal.entity.StudentCourseHomework;
import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.page.QueryInfo;
import com.ym.mec.common.service.BaseService;

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

public interface StudentCourseHomeworkService extends BaseService<Long, StudentCourseHomework> {

    /**
     * @describe 提交作业
     * @author Joburgess
     * @date 2020/3/19
     * @param bean:
     * @return void
     */
    void submitHomework(StudentCourseHomework bean);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/18
     * 获取学生作业界面详细信息
     */
    CourseHomeworkStudentDetailDto findCourseHomeworkStudentDetail(Long courseScheduleID,Long userId);

    /**
     * @describe 根据课程获取可交作业的学生
     * @author Joburgess
     * @date 2019/10/20
     * @param courseSchedule: 课程计划编号
     * @param userName: 用户名
     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
     */
    List<StudentCourseHomework> findStudentCourseHomeworkByCourse(Long courseSchedule,String userName);

    /**
     * @describe 跟新学生作业回复状态
     * @author Joburgess
     * @date 2019/10/20
     * @param teacherId: 教师编号
     * @param studentId: 学生编号
     * @return boolean
     */
    boolean updateReplyStatus(Integer teacherId,Long courseHomeworkId,Integer studentId);

    /**
     * @author Gaoyong
     * 课程作业提醒
     * @return
     */
    void homeworkRemind();

    /**
     * 获取课程学员作业列表
     * @param queryInfo
     * @return
     */
    PageInfo<StudentCourseHomeworkDto> findStudentCourseHomeworks(QueryInfo queryInfo);

    /**
     * @describe 获取学生的作业记录
     * @author Joburgess
     * @date 2020/3/20
     * @param queryInfo:
     * @return com.ym.mec.common.page.PageInfo
     */
    PageInfo findStudentHomeworkRecord(CourseHomeworkQueryInfo queryInfo);

    /**
     * 提交作业
     * @param studentCourseHomework
     */
    void add(StudentCourseHomework studentCourseHomework);

    /**
     * @describe 获取课程作业详情
     * @author Joburgess
     * @date 2020/11/17 0017
     * @param queryInfo:
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getCourseHomeworkDetail(CourseHomeworkQueryInfo queryInfo);
}
