package com.hz.pm.api.leave.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hz.pm.api.common.model.entity.KeyValDTO;
import com.hz.pm.api.leave.entity.domain.ExpertLeaveDetail;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 专家请假详情表（维度：天） Mapper 接口
 * </p>
 *
 * @author WendyYang
 * @since 2022-08-11
 */
public interface ExpertLeaveDetailMapper extends BaseMapper<ExpertLeaveDetail> {

    /**
     * 查询时间段之内的请假信息（请假状态：已通过、销假）
     *
     * @param leaveUserId 请假人ID
     * @param startDate   开始时间
     * @param endDate     结束时间
     * @return 请假详情
     * @author WendyYang
     **/
    List<ExpertLeaveDetail> selectLeaveIdByDateAndExpertId(@Param("leaveUserId") Long leaveUserId,
                                                           @Param("startDate") LocalDate startDate,
                                                           @Param("endDate") LocalDate endDate);

    /**
     * 查询用户在指定时间之内是否有请假
     *
     * @param leaveUserId 用户ID
     * @param times       时间集合
     * @return 请假天数
     * @author WendyYang
     **/
    Integer existsLeaveByLeaveUserIdAndTime(@Param("leaveUserId") Long leaveUserId,
                                            @Param("times") List<KeyValDTO<LocalDateTime, LocalDateTime>> times);

}
