using System.ComponentModel.DataAnnotations; using Dlhis.Entity.Device.Enums; using Kurisu.AspNetCore.Utils.Extensions; namespace Dlhis.Basic.Device.Request; public class DeviceSaveRequest : IValidatableObject { public long? Id { get; set; } /// /// 设备唯一号 /// [Required(ErrorMessage = "设备唯一号不能为空")] public string UniqueNo { get; set; } /// /// 模板code /// [Required(ErrorMessage = "模板不能为空")] public Guid TemplateCode { get; set; } /// /// 供应商信息 /// [Required(ErrorMessage = "供应商信息不能为空")] public string Supplier { get; set; } /// /// 设备功能 /// [MinLength(1, ErrorMessage = "设备功能不能为空")] [Required(ErrorMessage = "设备功能不能为空")] public List Funcs { get; set; } /// /// 设备类型 DeviceTypeEnumType /// [Required(ErrorMessage = "设备类型不能为空")] [EnumDataType(typeof(DeviceTypeEnumType))] public DeviceTypeEnumType Type { get; set; } /// /// 心跳间隔 /// [Range(0, int.MaxValue)] public int HeartbeatInterval { get; set; } /// /// 部署点 /// public string DeployPlace { get; set; } /// /// 部署坐标 /// public string DeployPosition { get; set; } /// /// 部署方向 /// public string DeployDirection { get; set; } /// /// 连接信息 /// [Required(ErrorMessage = "连接信息不能为空")] public string ConnectionInfo { get; set; } /// /// 是否启用 /// public bool Enable { get; set; } /// /// 是否作为考勤设备 /// public bool AsAttendance { get; set; } public IEnumerable Validate(ValidationContext validationContext) { if (Type != DeviceTypeEnumType.Door && AsAttendance) { yield return new ValidationResult($"{DeviceTypeEnumType.Door.GetDescription()}才可设置作为考勤设备", new[] { nameof(AsAttendance) }); } } }