using Dlhis.Entity.Canteen.Enums; using System.ComponentModel.DataAnnotations; using Kurisu.Core.DataAccess.Dto; using Kurisu.Core.CustomClass; namespace Dlhis.Canteen.Dishes.Request; public class BalanceRecordPageRequest : PageDto, IValidatableObject { /// /// 营业点codes /// public List BusinessplaceCodes { get; set; } /// /// 餐次 /// public List ShiftTypes { get; set; } /// /// 充值/消费 /// [EnumDataType(typeof(BalanceRecordTypeEnumType))] public BalanceRecordTypeEnumType? Type { get; set; } /// /// 查询日期范围类型 DateTimeSearchEnumType /// [EnumDataType(typeof(DateTimeSearchEnumType))] public DateTimeSearchEnumType? SearchDateTimeDimension { get; set; } /// /// 日期范围查询 /// public DateTimePeriod SearchDateTimePeriod { get; set; } public IEnumerable 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; } }