using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using ZhonTai.Admin.Core.Dto;
using NPP.SmartSchedue.Api.Contracts.Services.Time.Input;
using NPP.SmartSchedue.Api.Contracts.Services.Time.Output;
namespace NPP.SmartSchedue.Api.Contracts.Services.Time;
///
/// 员工休假服务接口
///
public interface IEmployeeLeaveService
{
Task GetAsync(long id);
Task> GetPageAsync(PageInput input);
Task AddAsync(EmployeeLeaveAddInput input);
Task UpdateAsync(EmployeeLeaveUpdateInput input);
Task DeleteAsync(long id);
Task SoftDeleteAsync(long id);
Task BatchSoftDeleteAsync(long[] ids);
///
/// 获取员工在指定时间段内的已批准请假记录
///
/// 员工ID
/// 开始时间
/// 结束时间
///
Task> GetApprovedLeavesByEmployeeAndTimeRangeAsync(
long employeeId,
DateTime startTime,
DateTime endTime);
///
/// 检查员工在指定时间段内是否有请假
///
/// 员工ID
/// 开始时间
/// 结束时间
///
Task HasApprovedLeaveInTimeRangeAsync(
long employeeId,
DateTime startTime,
DateTime endTime);
///
/// 检查员工在指定日期是否在请假
/// 智能分配系统专用方法,返回详细的请假信息
///
/// 员工ID
/// 检查日期
/// 请假状态信息
Task IsOnLeaveAsync(long employeeId, DateTime checkDate);
}