using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Device.Enums;
using Dlhis.Entity.Sys.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic.Device.Request;
public class DevicePermissionSaveRequest : IValidatableObject
{
///
/// 分配类型 AssignTypeEnumType
///
[EnumDataType(typeof(AssignTypeEnumType), ErrorMessage = "枚举类型错误")]
public AssignTypeEnumType AssignType { get; set; }
///
/// 分配值
///
///
/// 如果为用户,那么AssignValue=UserNo
///
[Required(ErrorMessage = "分配值不能为空")]
public string AssignValue { get; set; }
///
/// 来源分配权限类型 DevicePermissionTypeEnumType
///
[EnumDataType(typeof(DeviceAssignmentTypeEnumType), ErrorMessage = "枚举类型错误")]
public DeviceAssignmentTypeEnumType UniqueType { get; set; }
///
/// 分配权限值
///
public List Codes { get; set; }
///
/// AssignType == AssignTypeEnumType.Department 需要传入
///
public string TenantId { get; set; }
///
/// 设备类型
///
[EnumDataType(typeof(DeviceTypeEnumType))]
public DeviceTypeEnumType Type { get; set; }
public IEnumerable Validate(ValidationContext validationContext)
{
if (AssignType == AssignTypeEnumType.Department)
{
if (TenantId.IsEmpty())
{
yield return new ValidationResult("请明确具体的厂区", new[] { nameof(TenantId) });
}
}
if (AssignType == AssignTypeEnumType.Role)
{
yield return new ValidationResult("暂不支持角色分配", new[] { nameof(AssignType) });
}
}
///
/// 获取实际分配的权限值
///
///
public string GetActualAssignValue()
{
return AssignType == AssignTypeEnumType.Department ? TenantId + ":" + AssignValue : AssignValue;
}
}