using System.ComponentModel.DataAnnotations; namespace Dlhis.External.EMealVoucher.Request; public class EMealVoucherReceiveRequest : IValidatableObject { /// /// 流水号 /// [Required(ErrorMessage = "流水号不能为空")] public string No { get; set; } /// /// 标题 /// [Required(ErrorMessage = "标题不能为空")] public string Title { get; set; } /// /// 工号 /// [Required(ErrorMessage = "工号不能为空")] public string Code { get; set; } /// /// 手机号 /// [MinLength(11, ErrorMessage = "手机号不合法")] [MaxLength(11, ErrorMessage = "手机号不合法")] public string Phone { get; set; } /// /// 申请日期 /// public DateTime Date { get; set; } /// /// 成本中心 /// [Required(ErrorMessage = "成本中心不能为空")] public string CostId { get; set; } /// /// 来宾来源 /// public string Source { get; set; } /// /// 来宾数量 /// [Range(1, int.MaxValue, ErrorMessage = "来宾数量有误")] public int Number { get; set; } /// /// 申请事由 /// [Required(ErrorMessage = "申请事由不能为空")] public string Reason { get; set; } /// /// 餐别组合 早餐1;午餐2;晚餐3;夜宵4,凌晨餐5 /// [MinLength(1, ErrorMessage = "餐别不能为空")] [MaxLength(5, ErrorMessage = "餐别不能为空")] public List Shifts { get; set; } /// /// 餐券可消费厂区代码,逗号分隔 /// [MinLength(1, ErrorMessage = "消费厂区不能为空")] public List Factories { get; set; } /// /// 明细 /// [MinLength(1, ErrorMessage = "明细不能为空")] public List Details { get; set; } public IEnumerable Validate(ValidationContext validationContext) { if (Details.DistinctBy(x => x.IdNo).Count() != Details.Count) { yield return new ValidationResult("证件信息重复", new[] { "IdNo" }); } } } public class EMealVoucherReceiveDetailRequest : IValidatableObject { /// /// 用户类型 新员工/外来人员 /// [Required(ErrorMessage = "用户类型不可为空")] public string UserType { get; set; } /// /// 身份证号 /// [Required(ErrorMessage = "身份证号不可为空")] public string IdNo { get; set; } /// /// 姓名 /// [Required(ErrorMessage = "姓名不可为空")] public string Name { get; set; } /// /// 手机号 /// [MinLength(11, ErrorMessage = "手机号不合法")] [MaxLength(11, ErrorMessage = "手机号不合法")] public string Phone { get; set; } /// /// 使用开始 /// public DateTime Start { get; set; } /// /// 使用结束 /// public DateTime End { get; set; } /// /// 金额 /// [Range(0.01, double.MaxValue, ErrorMessage = "金额有误")] public decimal Amount { get; set; } public IEnumerable Validate(ValidationContext validationContext) { if (End <= DateTime.Now) { yield return new ValidationResult("使用结束时间不可小于当前时间", new[] { nameof(End) }); } if (Start >= End) { yield return new ValidationResult("使用开始,使用结束时间有误", new[] { nameof(Start) }); } } }