using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using NPP.SmartSchedue.Api.Contracts.Core.Enums; namespace NPP.SmartSchedue.Api.Contracts.Services.Time.Input; /// /// 周期性设置输入模型 /// 用于按周模式批量设置班次不可用标记 /// public class WeeklyPatternInput { /// /// 员工ID /// [Required(ErrorMessage = "员工ID不能为空")] public long PersonnelId { get; set; } /// /// 设置开始日期 /// [Required(ErrorMessage = "开始日期不能为空")] public DateTime StartDate { get; set; } /// /// 设置结束日期 /// [Required(ErrorMessage = "结束日期不能为空")] public DateTime EndDate { get; set; } /// /// 周模式配置:每周哪些天的哪些班次不可用 /// 键: 星期几 (0=周日, 1=周一, 2=周二, ..., 6=周六) /// 值: 该星期对应的不可用班次ID列表 /// 例如: {1: [1,2], 5: [3]} 表示每周一的1,2班次不可用,每周五的3班次不可用 /// [Required(ErrorMessage = "周模式配置不能为空")] public Dictionary> WeeklyPattern { get; set; } /// /// 不可用原因类型 /// [Required(ErrorMessage = "原因类型不能为空")] public UnavailabilityReasonType ReasonType { get; set; } /// /// 备注说明 /// [StringLength(200, ErrorMessage = "备注长度不能超过200字符")] public string Remark { get; set; } /// /// 优先级权重 /// [Range(1, 100, ErrorMessage = "优先级权重必须在1-100之间")] public int Priority { get; set; } = 1; /// /// 是否覆盖已有标记 /// public bool OverwriteExisting { get; set; } = false; }