package com.ruoyi.hezhi.mapper;

import com.ruoyi.hezhi.domain.TbExamCourse;
import com.ruoyi.hezhi.domain.vo.TbExamRegistrationCodeVo;
import org.apache.ibatis.annotations.Param;

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

/**
 * 考试课程Mapper接口
 *
 * @author ruoyi
 * @date 2024-12-18
 */
public interface TbExamCourseMapper
{

    /**
     * 获取考试课程列表
     * @param studyCenterId 学习中心ID
     * @param examId 考试ID
     * @param subjectWarehouseClassId 模拟考试ID
     * @param liveBroadcastId 直播ID
     * @return 结果
     */
    public List<TbExamCourse> getExamCourseList(@Param("studyCenterId") Long studyCenterId,
                                                @Param("examId") Long examId,
                                                @Param("subjectWarehouseClassId")Long subjectWarehouseClassId,
                                                @Param("liveBroadcastId")Long liveBroadcastId);

    /**
     * 新增考试课程
     *
     * @param tbExamCourse 考试课程
     * @return 结果
     */
    public int insertTbExamCourse(TbExamCourse tbExamCourse);

    /**
     * 修改考试课程
     *
     * @param tbExamCourse 考试课程
     * @return 结果
     */
    public int updateTbExamCourse(TbExamCourse tbExamCourse);

    /**
     * 删除考试课程
     *
     * @param studyCenterId 学习中心ID
     * @param examId 考试ID
     * @param subjectWarehouseClassId 模拟考试ID
     * @param liveBroadcastId 直播ID
     * @return 结果
     */
    public int deleteTbExamCourse(@Param("studyCenterId") Long studyCenterId,
                                  @Param("examId") Long examId,
                                  @Param("subjectWarehouseClassId") Long subjectWarehouseClassId,
                                  @Param("liveBroadcastId")Long liveBroadcastId);

    public List<Map<String, Object>> getEvaluateAgencyList(@Param("studyCenterId") Long studyCenterId);

    public List<Map<String, Object>> getStudyCenterCourseList(@Param("studyCenterId") Long studyCenterId,
                                                              @Param("evaluateAgencyId") Long evaluateAgencyId);

    /**
     * 获取考试课程列表
     * @param courseId 课程ID
     * @return 结果
     */
    public TbExamCourse getExamCourseDetail(@Param("courseId") Long courseId);

    /**
     * 根据考试ID 根据课程ID
     * @param courseId 课程ID
     * @return 结果
     */
    public TbExamCourse getSubjectWarehouseClassIdByCourseId(@Param("courseId") Long courseId);

    /**
     * 根据考试ID 根据课程ID
     * @param courseId 课程ID
     * @return 结果
     */
    public TbExamCourse getExamIdByCourseId(@Param("courseId") Long courseId);


    /**
     * 根据机构名称和职业名查询考试id机构id
     * @param agencyName 机构名称
     * @param careerName 职业名称
     * @return 结果
     */
    TbExamRegistrationCodeVo selectExamRegistrationCode(@Param("agencyName") String agencyName
            , @Param("careerName") String careerName
            , @Param("registrationBatch")String registrationBatch);
}
