package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.*;
import com.ym.mec.biz.dal.entity.CourseHomework;
import com.ym.mec.biz.dal.entity.CourseScheduleReview;
import com.ym.mec.biz.dal.page.CourseReview4EduQueryInfo;
import com.ym.mec.biz.dal.page.CourseReviewQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

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


public interface CourseReviewService extends BaseService<Integer, CourseScheduleReview> {
	/**
	 * 获取网管课列表
	 * @param queryInfo
	 * @return
	 */
	PageInfo<CourseReviewDto> findPracticeGroupReviews(CourseReviewQueryInfo queryInfo);


	/**
	 * 教务网管课评论列表
	 * @param queryInfo
	 * @return
	 */
	PageInfo<CourseScheduleReview> findPracticeGroupReviews4Edu(CourseReview4EduQueryInfo queryInfo);



	/**
	 * 添加网管课评论
	 * @param courseScheduleReview
	 * @return
	 */
	CourseScheduleReview addPracticeGroupReview(CourseScheduleReview courseScheduleReview);


	/**
	 * 获取评论详情
	 * @param id
	 * @return
	 */
	ReviewInfoDto getReviewInfo(Integer id);

	/**
	 * 获取课程信息
	 * @return
	 */
	TeacherClassHeadInfo getCourseInfoHead(Integer id);

	/**
	 * 跟新评论信息
	 * @param courseScheduleReview
	 * @return
	 */
	CourseScheduleReview updateReview(CourseScheduleReview courseScheduleReview);

	/**
	 * 推送待填写评价给老师
	 */
	void pushNeedReview2Teacher();

	/**
	 * 获取班级已结束的课程
	 * @param classGroupId
	 * @return
	 */
	List<CourseReviewDto> getClassOverCourse(Long classGroupId);

	/**
	 * 根据课程id获取老师和学生评价
	 * @param courseId
	 * @return
	 */
	ReviewInfoDto getStuAndTeaReview(Long courseId);

	/**
	 * 批量添加评价
	 * @param courseScheduleReviewList
	 * @return
	 */
	List<CourseScheduleReview> batchAdd(Integer teacherId, List<CourseScheduleReview> courseScheduleReviewList);

	/**
	 * 根据课程id获取老师和学生对应评价
	 * @param courseId
	 * @return
	 */
	ReviewInfoDto getStuAndTeaReviewInfo(Long courseId,Integer userId);

	/**
	 * 获取线上课评价列表
	 * @param queryInfo
	 * @return
	 */
	PageInfo<CourseReviewDto> findOnlineCourseReviews(CourseReviewQueryInfo queryInfo);

	/**
	 * 布置线上课作业
	 * @param courseScheduleId
	 * @param content
	 * @param expiryDate
	 * @return
	 */
	CourseHomework addHomeWork(Integer courseScheduleId,String content, Date expiryDate);

	/**
	 * 获取网管课列表
	 * @param queryInfo
	 * @return
	 */
	PageInfo<CourseReviewDto> getVipCourseReviews(CourseReviewQueryInfo queryInfo);

}
