namespace NPP.SmartSchedue.Api.Contracts.Core.Enums;

/// <summary>
/// 班次不可用原因类型枚举
/// 用于标识员工无法工作某个班次的具体原因
/// </summary>
public enum UnavailabilityReasonType
{
    /// <summary>个人意愿 - 员工个人偏好不希望工作该班次</summary>
    PersonalPreference = 1,

    /// <summary>培训任务 - 参加培训、学习、考试等</summary>
    Training = 2,

    /// <summary>会议任务 - 参加会议、汇报等</summary>
    Meeting = 3,

    /// <summary>设备维护 - 参与设备检修、维护工作</summary>
    Equipment = 4,

    /// <summary>临时请假 - 临时事假、病假等</summary>
    TemporaryLeave = 7,

    /// <summary>计划请假 - 年假、调休等计划性假期</summary>
    PlannedLeave = 8,

    /// <summary>医疗原因 - 体检、就医、康复等</summary>
    Medical = 9,

    /// <summary>家庭事务 - 家庭重要事务处理</summary>
    Family = 10,

    /// <summary>轮岗安排 - 临时调配到其他岗位</summary>
    Rotation = 11,

    /// <summary>技能认证 - 参加技能考核、认证等</summary>
    Certification = 12,

    /// <summary>其他原因 - 其他特殊情况</summary>
    Other = 99
}

/// <summary>
/// 不可用原因分组枚举
/// 用于将具体原因进行分类管理
/// </summary>
public enum UnavailabilityCategory
{
    /// <summary>个人类 - 个人意愿相关</summary>
    Personal = 1,
    
    /// <summary>工作任务类 - 生产相关任务</summary>
    WorkTask = 2,
    
    /// <summary>请假类 - 各种请假情况</summary>
    Leave = 3,
    
    /// <summary>系统安排类 - 管理层统一调配</summary>
    SystemArranged = 4
}