package com.qmth.teachcloud.common.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qmth.teachcloud.common.bean.dto.CourseInfoDto;
import com.qmth.teachcloud.common.bean.result.BasicCourseResult;
import com.qmth.teachcloud.common.entity.BasicCourse;
import org.apache.ibatis.annotations.Param;

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

/**
 * <p>
 * 课程表 Mapper 接口
 * </p>
 *
 * @author xf
 * @since 2021-03-23
 */
public interface BasicCourseMapper extends BaseMapper<BasicCourse> {

    List<BasicCourse> listCoursesByUserId(Long id);

    IPage<BasicCourse> listPage(Page<BasicCourse> page, @Param("schoolId") Long schoolId, @Param("code") String code, @Param("name") String name);

    List<CourseInfoDto> findByUserLoginNameAndRealName(@Param("loginName") String loginName, @Param("realName") String realName);

    /**
     * 查询课程字典
     *
     * @param iPage           分页参数
     * @param belongOrgId     所属机构id
     * @param courseName      课程名称（模糊查询）
     * @param startCreateTime 课程创建时间（起始值）
     * @param endCreateTime   课程创建时间（终止值）
     * @param enable          状态
     * @param schoolId        学校id
     * @param orgIds          权限机构组
     * @return 结果
     */
    IPage<BasicCourseResult> findBasicCoursePage(@Param("iPage") Page<BasicCourseResult> iPage,
                                                 @Param("belongOrgId") Long belongOrgId,
                                                 @Param("courseName") String courseName,
                                                 @Param("startCreateTime") Long startCreateTime,
                                                 @Param("endCreateTime") Long endCreateTime,
                                                 @Param("enable") Boolean enable,
                                                 @Param("schoolId") Long schoolId,
                                                 @Param("orgIds") Set<Long> orgIds);

    Set<Map<String, Object>> findExamTaskByCourseCode(@Param("schoolId") Long schoolId, @Param("courseCodeSet") Set<String> courseCodeSet);
}
