using NetAdmin.Domain.Enums.Sys;
namespace NetAdmin.Domain.Dto.Sys.Role;
///
/// 请求:创建角色
///
public record CreateRoleReq : Sys_Role, IValidatableObject
{
///
/// 角色-接口映射
///
public IReadOnlyCollection ApiIds { get; init; }
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonString]
public override string DashboardLayout { get; set; }
///
[EnumDataType(typeof(DataScopes), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.角色数据范围不正确))]
public override DataScopes DataScope { get; init; } = DataScopes.All;
///
/// 当 DataScope = SpecificDept ,此参数指定部门编号
///
[SpecificDept]
public IReadOnlyCollection DeptIds { get; init; }
///
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override bool DisplayDashboard { get; init; }
///
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override bool Enabled { get; init; }
///
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override bool IgnorePermissionControl { get; init; }
///
/// 角色-菜单映射
///
public IReadOnlyCollection MenuIds { get; init; }
///
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.角色名称不能为空))]
public override string Name { get; init; }
///
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override long Sort { get; init; } = Numbers.DEF_SORT_VAL;
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public override string Summary { get; init; }
///
public IEnumerable Validate(ValidationContext validationContext)
{
if (validationContext.MemberName != null) {
DashboardLayout = JsonSerializer.Serialize(JsonDocument.Parse(DashboardLayout));
}
yield break;
}
}