using System;
using System.Collections.Generic;

namespace NPP.SmartSchedue.Api.Contracts.Services.Time.Output;

/// <summary>
/// 员工请假状态检查结果
/// 用于智能分配系统的人员可用性检查
/// </summary>
public class EmployeeLeaveStatusResult
{
    /// <summary>
    /// 是否在请假期间
    /// </summary>
    public bool IsOnLeave { get; set; }

    /// <summary>
    /// 请假类型（如果在请假期间）
    /// </summary>
    public string LeaveType { get; set; }

    /// <summary>
    /// 请假开始时间（如果在请假期间）
    /// </summary>
    public DateTime? LeaveStartTime { get; set; }

    /// <summary>
    /// 请假结束时间（如果在请假期间）
    /// </summary>
    public DateTime? LeaveEndTime { get; set; }

    /// <summary>
    /// 请假原因（如果在请假期间）
    /// </summary>
    public string LeaveReason { get; set; }

    /// <summary>
    /// 请假记录ID（如果在请假期间）
    /// </summary>
    public long? LeaveRecordId { get; set; }

    /// <summary>
    /// 检查日期
    /// </summary>
    public DateTime CheckDate { get; set; }

    /// <summary>
    /// 相关的请假记录列表（可能有多个重叠的请假）
    /// </summary>
    public List<EmployeeLeaveInfo> LeaveRecords { get; set; } = new();
}

/// <summary>
/// 员工请假信息简化版
/// </summary>
public class EmployeeLeaveInfo
{
    public long Id { get; set; }
    public string LeaveType { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }
    public string Reason { get; set; }
}