55 lines
1.4 KiB
C#
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) });
|
|
}
|
|
}
|
|
} |