using System;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;

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

/// <summary>
/// 班次不可用标记分页查询输出模型
/// </summary>
public class ShiftUnavailabilityGetPageOutput
{
    /// <summary>
    /// 记录ID
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// 员工ID
    /// </summary>
    public long PersonnelId { get; set; }

    /// <summary>
    /// 员工姓名
    /// </summary>
    public string PersonnelName { get; set; }

    /// <summary>
    /// 员工工号
    /// </summary>
    public string PersonnelCode { get; set; }

    /// <summary>
    /// 不可用日期
    /// </summary>
    public DateTime Date { get; set; }

    /// <summary>
    /// 日期显示（格式化后）
    /// </summary>
    public string DateDisplay { get; set; }

    /// <summary>
    /// 星期几
    /// </summary>
    public string Weekday { get; set; }

    /// <summary>
    /// 班次ID
    /// </summary>
    public long ShiftId { get; set; }

    /// <summary>
    /// 班次名称
    /// </summary>
    public string ShiftName { get; set; }

    /// <summary>
    /// 班次时间范围
    /// </summary>
    public string ShiftTimeRange { get; set; }

    /// <summary>
    /// 不可用原因类型
    /// </summary>
    public UnavailabilityReasonType ReasonType { get; set; }

    /// <summary>
    /// 原因类型显示名称
    /// </summary>
    public string ReasonTypeName { get; set; }

    /// <summary>
    /// 原因分组
    /// </summary>
    public UnavailabilityCategory Category { get; set; }

    /// <summary>
    /// 网格显示符号
    /// </summary>
    public string GridSymbol { get; set; }

    /// <summary>
    /// CSS样式类名
    /// </summary>
    public string ColorClass { get; set; }

    /// <summary>
    /// 备注说明
    /// </summary>
    public string Remark { get; set; }

    /// <summary>
    /// 是否为模板生成的记录
    /// </summary>
    public bool IsFromTemplate { get; set; }

    /// <summary>
    /// 来源模板日期显示
    /// </summary>
    public string SourceTemplateDateDisplay { get; set; }

    /// <summary>
    /// 优先级权重
    /// </summary>
    public int Priority { get; set; }

    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime? CreatedTime { get; set; }

    /// <summary>
    /// 创建人
    /// </summary>
    public string CreatedUserName { get; set; }
}