package com.ssj.service.conch.teacher.v1.service;

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

import org.springframework.web.multipart.MultipartFile;

import com.ssj.bean.kmt.kmt.domain.KmtCourse;
import com.ssj.bean.kmt.kmt.domain.KmtImgFace;
import com.ssj.framework.core.util.ResponseEntity;
import com.ssj.service.conch.parents.dto.CorrectDetailDto2;
import com.ssj.service.conch.parents.v1.dto.CorrectDetailDto3;
import com.ssj.service.conch.teacher.v1.dto.ChildInfoDto;
import com.ssj.service.conch.teacher.v1.dto.LessonGroupDTO;
import com.ssj.service.conch.teacher.v1.dto.LessonGroupFeedbackStudentDTO;
import com.ssj.service.conch.teacher.v1.dto.LessonGroupSignStudentDTO;
import com.ssj.service.conch.teacher.v1.dto.SeniorFeedbackDto;
import com.ssj.service.conch.teacher.v1.request.GiveUpHandoutRequest;
import com.ssj.service.conch.teacher.v1.request.LessonGroupFeedbackRequest;
import com.ssj.service.conch.teacher.v1.request.SeniorFeedbackRequest;

public interface MyTeacherV1Service {
    /**
     * 初始化资深反馈报告
     * @param studentId
     * @param courseId
     * @return
     */
    Map<String, Object> initSeniorFeedback (String studentId, String courseId);

    /**
     * 请求学生信息
     * @param studentId
     * @return
     */
    ChildInfoDto getChildInfo (String studentId);

    /**
     * 查询课程的反馈
     * @param courseId
     * @return
     */
    SeniorFeedbackDto getCourseFeedback (String courseId);

    /**
     * 通过讲义id查询所有题号,未使用的题号会被删除，题号不连续
     * @param courseKnowId
     * @return
     */
    List<Integer> findQuestionIndex (String courseKnowId);

    /**
     * 通过课程号查询错题题号
     * @param courseId
     * @return
     */
    List<Integer> findWrongQuestionIndex (String courseId);

    /**
     * 资深一对一反馈保存
     * @param userId
     * @param request
     * @return
     */
    boolean saveSeniorFeedback (String userId, SeniorFeedbackRequest request);

    /**
     * 查询课程的反馈总表记录
     * @param kmtCourse
     * @return
     */
    KmtImgFace getKmtImgFace (KmtCourse kmtCourse);

    List<LessonGroupDTO> findLessonGroupList(String teacherId);

    List<LessonGroupFeedbackStudentDTO> findLessonGroupFeedbackStudentList(String lessonGroupId, String childName);

    List<LessonGroupSignStudentDTO> findLessonGroupStudentSignList(String lessonGroupId, Integer signInOff, String childName);

    /**
     * 小课签到
     */
    ResponseEntity lessonGroupSignIn(String lessonGroupId, List<String> courseIdList, String teacherId);

    /**
     * 小课签离
     */
    ResponseEntity lessonGroupSignOff(String lessonGroupId, List<String> courseIdList, String teacherId);

    ResponseEntity confirmLessonGroup(String lessonGroupId, String teacherId);

    ResponseEntity callLessonGroup(String teacherId, String lessonGroupId, String msg, String lng, String lat);
    
    /**
     * @param teacherId
     * @param lessonGroupId
     * @param imgUrl
     * @return
    
     * 方法说明:小课讲义图片识别
    
     * 创立日期:2018年12月6日 下午5:06:22
     * 创建人:yangcan
    
     */
    public ResponseEntity faceGroupHandout(String teacherId,String lessonGroupId,MultipartFile files) throws Exception;
    
    /**
     * @param teacherId
     * @param request
     * @return
    
     * 方法说明:小课讲义完成
    
     * 创立日期:2018年12月12日 上午10:43:16
     * 创建人:yangcan
    
     */
    public ResponseEntity finishHandout(String teacherId,String lessonGroupId);
    
    /**
     * @param request
     * @return
    
     * 方法说明:小课-学生忽略上传讲义
    
     * 创立日期:2018年12月19日 上午11:07:39
     * 创建人:yangcan
    
     */
    public ResponseEntity giveUpHandout(GiveUpHandoutRequest request);

    /**
     * 小课反馈学生列表，加入了labels标签字段， 错误题号列表，未使用题号列表
     * @param lessonGroupId
     * @return
     */
    public Map<String, Object> findFeedbackStudentList (String lessonGroupId);

    /**
     * 小课反馈保存
     * @param teacherId 编辑的老师id
     * @param request
     */
    public void findStudentFeedback(String teacherId, LessonGroupFeedbackRequest request);

    /**
     * 查询单科批改详情
     * @param vipId 学生id
     * @param subject 科目
     * @param date 日期
     */
    CorrectDetailDto2 subjectCorrectDetail(String vipId, String subject, String date);
    
    CorrectDetailDto3 subjectCorrectDetail3(String vipId, String subject, String date);

    /**
     * 查询作业反馈报告
     * @param pushId 学生id
     *
     */
    Map<String, Object> findHomeworkReport(String pushId);
    
    Map<String, Object> findHomeworkReport3(String pushId);
    
}
