Files
jinko.yikatong/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs
2024-03-18 11:03:43 +08:00

68 lines
2.9 KiB
C#

using Dlhis.Entity.Canteen.Enums;
using Kurisu.Core.CustomClass;
using System.ComponentModel.DataAnnotations;
using Kurisu.Core.DataAccess.Dto;
namespace Dlhis.Canteen.Dishes.Request
{
public class BalanceRecordUserPageRequest : PageDto, IValidatableObject
{
/// <summary>
/// 查询日期范围类型 DateTimeSearchEnumType
/// </summary>
[EnumDataType(typeof(DateTimeSearchEnumType))]
public DateTimeSearchEnumType? SearchDateTimeDimension { get; set; }
/// <summary>
/// 日期范围查询
/// </summary>
public DateTimePeriod SearchDateTimePeriod { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var now = DateTime.Now;
if (SearchDateTimeDimension.HasValue)
{
//重新赋值
SearchDateTimePeriod = new DateTimePeriod();
if (SearchDateTimeDimension == DateTimeSearchEnumType.Day)
{
SearchDateTimePeriod.Start = DateTime.Today;
SearchDateTimePeriod.End = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59);
}
else if (SearchDateTimeDimension == DateTimeSearchEnumType.Week)
{
SearchDateTimePeriod.Start = now.AddDays(1 - (int)now.DayOfWeek);
SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddDays(6);
}
else if (SearchDateTimeDimension == DateTimeSearchEnumType.Month)
{
SearchDateTimePeriod.Start = new DateTime(now.Year, now.Month, 1);
SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddMonths(1).AddDays(-1);
}
else if (SearchDateTimeDimension == DateTimeSearchEnumType.Season)
{
SearchDateTimePeriod.Start = now.AddMonths(0 - ((now.Month - 1) % 3));
SearchDateTimePeriod.End = now.AddMonths(3 - ((now.Month - 1) % 3)).AddMonths(1).AddDays(-1);
}
else if (SearchDateTimeDimension == DateTimeSearchEnumType.HalfOfYear)
{
SearchDateTimePeriod.Start = now.AddDays(-180);
SearchDateTimePeriod.End = now;
}
else if (SearchDateTimeDimension == DateTimeSearchEnumType.Year)
{
SearchDateTimePeriod.Start = new DateTime(now.Year, 1, 1);
SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddYears(1).AddDays(-1);
}
SearchDateTimePeriod.Start = SearchDateTimePeriod.Start.Value.Date;
SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.Date;
}
yield break;
}
}
}