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 BatchCellEditInput
{
///
/// 单元格操作列表
///
[Required(ErrorMessage = "单元格操作列表不能为空")]
[MinLength(1, ErrorMessage = "至少需要指定一个操作")]
public List CellOperations { get; set; } = new();
///
/// 是否标记为模板生成
///
public bool MarkAsTemplate { get; set; } = false;
///
/// 操作备注
///
[StringLength(200, ErrorMessage = "备注长度不能超过200字符")]
public string Remark { get; set; }
}
///
/// 单个单元格操作定义
/// 包含操作类型和目标信息
///
public class BatchCellOperation
{
///
/// 操作类型
///
[Required(ErrorMessage = "操作类型不能为空")]
public BatchCellOperationType Operation { get; set; }
///
/// 员工ID
///
[Required(ErrorMessage = "员工ID不能为空")]
public long PersonnelId { get; set; }
///
/// 日期
///
[Required(ErrorMessage = "日期不能为空")]
public DateTime Date { get; set; }
///
/// 班次ID
///
[Required(ErrorMessage = "班次ID不能为空")]
public long ShiftId { get; set; }
///
/// 不可用原因类型(Set操作时必填)
///
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; }
///
/// 生效开始时间
///
public DateTime? EffectiveStartTime { get; set; }
///
/// 生效结束时间
///
public DateTime? EffectiveEndTime { get; set; }
}