using System.ComponentModel.DataAnnotations; using Dlhis.Entity.Basic.Enums; using Kurisu.AspNetCore.Utils.Extensions; namespace Dlhis.Basic.WorkGrids.Request; public class WorkGridTimePeriodSaveRequest : IValidatableObject { public long? Id { get; set; } /// /// 班次, eg: 禁止编辑 /// public WorkGridTimePeriodEnumType Type { get; set; } /// /// 前(min) /// [Range(1, int.MaxValue)] public int Before { get; set; } /// /// 后(min) /// [Range(1, int.MaxValue)] public int After { get; set; } /// /// 开始时间 /// public TimeOnly Start { get; set; } /// /// 结束时间 /// public TimeOnly End { get; set; } /// public IEnumerable Validate(ValidationContext validationContext) { if (Type != WorkGridTimePeriodEnumType.Day) { yield break; } var today = DateTime.Today; var start = today.Add(Start.AddMinutes(-Before).ToTimeSpan()); var end = today.Add(End.AddMinutes(After).ToTimeSpan()); if (start.Date != end.Date) { yield return new ValidationResult(WorkGridTimePeriodEnumType.Day.GetDescription() + "禁止跨天", new[] { nameof(Type) }); } } }