Files
jinko.yikatong/Src/Dlhis.Basic/WorkGrids/Request/WorkGridTimePeriodSaveRequest.cs
2025-06-11 17:03:07 +08:00

55 lines
1.4 KiB
C#

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; }
/// <summary>
/// 班次, eg: 禁止编辑
/// </summary>
public WorkGridTimePeriodEnumType Type { get; set; }
/// <summary>
/// 前(min)
/// </summary>
[Range(1, int.MaxValue)]
public int Before { get; set; }
/// <summary>
/// 后(min)
/// </summary>
[Range(1, int.MaxValue)]
public int After { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public TimeOnly Start { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public TimeOnly End { get; set; }
/// <inheritdoc />
public IEnumerable<ValidationResult> 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) });
}
}
}