package com.ssj.service.kmt.service;


import com.ssj.bean.kmt.kmt.domain.KmtExerciseBookCourse;
import com.ssj.framework.core.common.service.BaseService;
import com.ssj.service.conch.parents.v1.dto.BookDTO;
import com.ssj.service.kmt.dto.ExerciseBookCourseDTO;
import com.ssj.service.kmt.dto.ExerciseBookDto;
import com.ssj.service.kmt.request.ExerciseConditionRequest;
import com.ssj.service.kmt.request.QuestionDistributeRequest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface KmtExerciseBookCourseService extends BaseService<KmtExerciseBookCourse, String> {

    /**
     * 查询练习册的筛选条件
     * @param request
     * @return
     */
    public List<ExerciseBookDto> getExerciseCondition(ExerciseConditionRequest request, String userId);


    /**
     * 查询出练习册的名称
     * @param bookId
     * @return
     */
    public String getExerciseBookByBookId(String bookId);

    /**
     * 查询练习册课时列表
     * @param request
     */
    List<ExerciseBookCourseDTO> getBookExerciseList(QuestionDistributeRequest request);

    /**
     * 查询某个单元的课时列表
     * @param unitId
     * @return
     */
    List<KmtExerciseBookCourse> findByUnitId(String unitId);

    /**
     * 查询某个练习册的列表
     * @param bookId
     * @return
     */
    List<KmtExerciseBookCourse> findByBookId(String bookId);

    /**
     * 根据年级、科目分页查询教辅列表
     * @param grade
     * @param subject 科目
     * @param bookName
     * @param pageable 分页信息
     * @return
     */
    Page<BookDTO> findBookPage(String grade, String subject, String bookName, Pageable pageable);

    /**
     * 查询练习册的版本类型
     * @param bookId
     * @return
     */
    int findVersionTypeByBookId (String bookId);

    /**
     * 查询所有练习册
     * @param subject 科目
     * @param grade 年级
     * @param semester 上下学期
     * @param versionType 版本, 0指所有版本
     * @return
     */
    List<KmtExerciseBookCourse> getAllBookCourse(String subject, String grade, int semester, int versionType);

    /**
     * 查询练习册信息
     * @param bookId
     * @return
     */
    KmtExerciseBookCourse findBookDataByBookId(String bookId);
    /**
     * 查询练习册信息
     * @param bookIds
     * @return
     */
    List<KmtExerciseBookCourse> findBookDataByBookIds(List<String> bookIds);

    /**
     * 查询题目对应的科目
     * @param questionId
     * @return
     */
    String findCourseNameByQuestionId (String questionId);

    List<KmtExerciseBookCourse> findByBookId(List<String> bookIds);

}
