package com.ruoyi.service;

import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.dto.EmployeeCourseExamDto;
import com.ruoyi.dto.PaperDto;
import com.ruoyi.dto.TrainingPlanClassificationDto;
import com.ruoyi.dto.TrainingPlanDto;
import com.ruoyi.entity.*;

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

/**
 * @program: RuoYi-Vue-master
 * @description:
 * @author: niujie
 * @create: 2023-08-07 15:25
 */
public interface TrainService {
    List<TrainingPlanClassificationDto> getTrainingPlanClassificationList(String categoriesName);

    boolean saveTrainingPlanClassificationList(TrainingPlanClassification trainingPlanClassification);

    TrainingPlanClassification getTrainingPlanClassificationById(String id);

    boolean delTrainingPlanClassificationById(String id);

    PageInfo<QuestionBank> getQuestionBankList(String questionTitle, String questionTypes, String trainingPlanClassificationId, Integer pageNo, Integer pageSize);

    boolean delQuestionBankById(String id);

    QuestionBank getQuestionBankById(String id);

    boolean saveQuestionBank(QuestionBank questionBank);

    List<TrainingPlanClassification> queryLastLevelClassification();

    PageInfo<Course> getCourseList(String courseTitle, String categoriesAuthor, String categoriesLecturer, String trainingPlanClassificationId, Integer pageNo, Integer pageSize);

    Course getCourseById(String id);

    boolean delCourseById(String id);

    boolean saveCourse(Course course);

    PageInfo<TrainingPlan> getTrainingPlanList(String trainingPlanName, String lessonScheduleState, Integer pageNo, Integer pageSize);

    boolean delTrainingPlanById(String id);

    List<Course> getCourseSelect(String trainingPlanClassificationId);

    TrainingPlanDto getTrainingPlanById(String id);

    boolean saveTrainingPlan(TrainingPlanDto trainingPlanDto);

    PageInfo<TrainingPlan> queryTrainPlanPage(Integer pageNo, Integer pageSize);

    List<Course> queryCourseByTrainingPlanId(String trainingPlanId);

    AjaxResult queryQuestionBankByTrainingPlanId(String trainingPlanId);

    AjaxResult queryQuestionBankByTrainingPlanIdValidate(String trainingPlanId);

    AjaxResult submitQuestionBank(List<EmployeeCourseExamDto> employeeCourseExamDtoList);

    AjaxResult queryQuestionBankList(Integer pageNo, Integer pageSize);

    AjaxResult queryQuestionBankDetail(String id);

    PageInfo<Certificate> getCertificateList(String certificateName, Integer pageNo, Integer pageSize);

    boolean delCertificateById(String id);

    Certificate getCertificateById(String id);

    boolean saveCertificate(Certificate certificate);

    boolean auditTrainingPlan(TrainingPlan trainingPlan);

    List<Certificate> getCertificateSelect(String trainingPlanClassificationId);

    PageInfo<Paper> getPaperList(String paperName, String paperStatus, Integer pageNo, Integer pageSize);

    boolean deactivatePaperById(String id, String type);

    PaperDto getPaperById(String id);

    boolean savePaper(PaperDto paperDto);

    List<QuestionBank> getQuestionBankSelect(String trainingPlanClassificationId);

    /**
     * 培训首页统计
     * @return
     */
    Map<String, String> trainStatistics();
}
