package jnpf.attendance.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.entity.attendance.AttendanceLeaveType;
import jnpf.exception.ApproveException;
import jnpf.model.attendance.vo.attendance.AttendanceLeaveRulesVo;

import java.util.List;

/**
 * @author panpan
 */
public interface AttendanceLeaveTypeService extends IService<AttendanceLeaveType> {
    /**
     * 创建或修改假期类型
     * @param attendanceLeaveType 创建参数
     */
    void typeSaveOrUpdate(AttendanceLeaveType attendanceLeaveType);
    /**
     * 删除假期类型
     * @param id 假期类型 ID
     */
    void deleteType(String id);

    /**
     * 获取用户请假列表
     * @return 列表
     */
    List<AttendanceLeaveRulesVo> getUserLeaveList();

    /**
     * 获取用户请假详情
     * @param id 假期类型 ID
     * @return 详情
     */
    AttendanceLeaveRulesVo getUserLeaveDetail(String id,String userId) throws ApproveException;

    /**
     * 根据假期类型ID列表查询请假类型（过滤已删除）
     * @param holidayIdList 假期类型ID列表
     * @return 请假类型列表
     */
    List<AttendanceLeaveType> getAttendanceLeaveTypes(List<String> holidayIdList);

    /**
     * 根据假期类型ID列表查询请假类型（包含已删除，供考勤结果下拉等场景）
     *
     * @param holidayIdList 假期类型ID列表，为空时查询全部
     * @return 请假类型列表（含已删除）
     */
    List<AttendanceLeaveType> getAttendanceLeaveTypesIncludeDeleted(List<String> holidayIdList);
}
