// ***********************************************************************
// 
//     AgileWebs
// 
// ***********************************************************************
using Core.Cerberos.Adapters.Common.Enums;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using System.Text.Json.Serialization;
namespace Core.Cerberos.Domain.Contexts.Onboarding.Request
{
    /// 
    /// Data transfer object (DTO) for adding a role.
    /// 
    public class RoleRequest
    {
        /// 
        /// Gets or sets the name of the role.
        /// 
        [BsonElement("name")]
        [BsonRepresentation(BsonType.String)]
        [JsonPropertyName("name")]
        public string Name { get; set; } = null!;
        /// 
        /// Gets or sets the description of the role.
        /// 
        [BsonElement("description")]
        [BsonRepresentation(BsonType.String)]
        [JsonPropertyName("description")]
        public string? Description { get; set; }
        /// 
        /// Gets or sets the status of the entity.
        /// 
        [BsonElement("applications")]
        [JsonPropertyName("applications")]
        [JsonConverter(typeof(EnumArrayJsonConverter))]
        public ApplicationsEnum[]? Applications { get; set; }
        /// 
        /// Gets or sets the modules of the role.
        /// 
        [BsonElement("modules")]
        [JsonPropertyName("modules")]
        public string[] Modules { get; set; } = null!;
        /// 
        /// Gets or sets the permissions of the role.
        /// 
        [BsonElement("permissions")]
        [JsonPropertyName("permissions")]
        public string[] Permissions { get; set; } = null!;
    }
}