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

import com.ssj.framework.core.util.ResponseEntity;
import com.ssj.service.conch.common.request.PageReq;
import com.ssj.service.conch.teacher.request.teacherorg.*;
import com.ssj.service.kmt.dto.ExerciseQuestionAnswer4CorrectDTO;
import com.ssj.service.kmt.request.AnswerSearchRequest;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * @author Mount Liu
 * @version 2019/2/28
 */
public interface TeacherOrgService {

    /**
     * 完善信息
     *
     * @param userId
     * @param req
     * @return
     */
    ResponseEntity saveInfo(String userId, SaveInfoReq req);

    /**
     * 查看我的信息
     *
     * @param userId
     * @return
     */
    ResponseEntity getMyInfo(String userId);

    ResponseEntity getMyInfoV1(String userId);

    ResponseEntity newGetMyInfo(String userId);

    /**
     * 未解答难题列表
     *
     * @param pageable
     * @param userId
     * @param req
     * @return
     */
    ResponseEntity unAnsweredProblemList(String userId, Pageable pageable, PageReq req);

    /**
     * 已解答难题列表
     *
     * @param pageable
     * @param userId
     * @param req
     */
    ResponseEntity answeredProblemList(String userId, Pageable pageable, AnsweredProblemReq req);

    /**
     * 难题解答
     *
     * @param req
     * @return
     */
    ResponseEntity saveAnswer(SaveAnswerReq req);

    /**
     * 知识点列表
     *
     * @param req
     * @param pageable
     * @return
     */
    ResponseEntity knowList(KnowListReq req, Pageable pageable);

    /**
     * 知识点列表
     *
     * @param req
     * @param pageable
     * @return
     */
    ResponseEntity knowListNew(KnowListReq req, Pageable pageable);

    /**
     * 绑定学生列表
     *
     * @param userId
     * @param pageable
     * @return
     */
    ResponseEntity bindStudentList(String userId, Pageable pageable, PageReq req);

    /**
     * 作业任务
     *
     * @param req
     * @return
     */
    ResponseEntity homeworkTask(HomeworkTaskReq req);

    /**
     * 作业反馈报告
     *
     * @param req
     * @return
     */
    ResponseEntity homeworkReport(HomeworkReportReq req);

    /**
     * 获取机构列表
     *
     * @param req
     * @param pageable
     * @return
     */
    ResponseEntity getOrganizationList(OrganizationListReq req, Pageable pageable);

    /**
     * 扫一扫绑定
     *
     * @param userId
     * @param req
     * @return
     */
    ResponseEntity swipeBinding(String userId, SwipeBindingReq req);

    /**
     * 纠正科目
     * @param homeworkPictureId 需要纠正的作业图片
     * @param courseName 纠正为此科目
     */
    ResponseEntity rectifyCourseName(String homeworkPictureId, String courseName);

    /**
     * 标记作业图片为模糊图片并推送消息给相应人员
     */
    ResponseEntity sendVagueImgRemind(String homeworkPictureId);

    /**
     * 把作业图片移动到小时光图片
     */
    ResponseEntity homeworkToSmarttimePicture(String homeworkPictureId);

    /**
     * 查询教辅/单元/课时筛选条件，用于查询答案
     * @param homeworkId
     */
    ResponseEntity getAnswerFilterCondition(String homeworkId);

    /**
     * 查询课时内所有题目的答案
     * @return
     */
    List<ExerciseQuestionAnswer4CorrectDTO> findAnswerList(AnswerSearchRequest request);

    /**
     * 提交批改结果
     */
    void correct(CorrectRequest request, String teacherId);
}
