using System;
using System.ComponentModel.DataAnnotations;
using ZhonTai.Admin.Core.Dto;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;

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

/// <summary>
/// 班次不可用标记分页查询输入模型
/// </summary>
public class ShiftUnavailabilityGetPageInput
{
    /// <summary>
    /// 员工ID（可选，用于过滤特定员工的记录）
    /// </summary>
    public long? PersonnelId { get; set; }

    /// <summary>
    /// 班次ID（可选，用于过滤特定班次的记录）
    /// </summary>
    public long? ShiftId { get; set; }

    /// <summary>
    /// 开始日期（可选，用于日期范围过滤）
    /// </summary>
    public DateTime? StartDate { get; set; }

    /// <summary>
    /// 结束日期（可选，用于日期范围过滤）
    /// </summary>
    public DateTime? EndDate { get; set; }

    /// <summary>
    /// 原因类型（可选，用于按原因类型过滤）
    /// </summary>
    public UnavailabilityReasonType? ReasonType { get; set; }

    /// <summary>
    /// 原因分组（可选，用于按分组过滤）
    /// </summary>
    public UnavailabilityCategory? Category { get; set; }

    /// <summary>
    /// 是否为模板生成（可选，用于过滤模板生成的记录）
    /// </summary>
    public bool? IsFromTemplate { get; set; }

    /// <summary>
    /// 关键字搜索（搜索备注内容）
    /// </summary>
    [StringLength(100, ErrorMessage = "关键字长度不能超过100字符")]
    public string Keyword { get; set; }
}