// ***********************************************************************
// 
//     AgileWebs
// 
// ***********************************************************************
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using System.Text.Json.Serialization;
namespace Core.Thalos.Domain.Contexts.Onboarding.Request
{
    /// 
    /// Data transfer object (DTO) for adding a user.
    /// 
    public class UserRequest
    {
        /// 
        /// Gets or sets the email address of the user.
        /// 
        [BsonElement("email")]
        [BsonRepresentation(BsonType.String)]
        [JsonPropertyName("email")]
        public string Email { get; set; } = null!;
        /// 
        /// Gets or sets the name of the user.
        /// 
        [BsonElement("name")]
        [BsonRepresentation(BsonType.String)]
        [JsonPropertyName("name")]
        public string Name { get; set; } = null!;
        /// 
        /// Gets or sets the middlename of the user.
        /// 
        [BsonElement("middleName")]
        [BsonRepresentation(BsonType.String)]
        [JsonPropertyName("middleName")]
        public string MiddleName { get; set; } = null!;
        /// 
        /// Gets or sets the last name of the user.
        /// 
        [BsonElement("lastName")]
        [BsonRepresentation(BsonType.String)]
        [JsonPropertyName("lastName")]
        public string LastName { get; set; } = null!;
        /// 
        /// Gets or sets the role ID of the user.
        /// 
        [BsonElement("roleId")]
        [BsonRepresentation(BsonType.ObjectId)]
        [JsonPropertyName("roleId")]
        public string RoleId { get; set; } = null!;
        /// 
        /// Gets or sets the array of companies associated with the user.
        /// 
        [BsonElement("companies")]
        [JsonPropertyName("companies")]
        public string[] Companies { get; set; } = null!;
        /// 
        /// Gets or sets the array of projects associated with the user.
        /// 
        [BsonElement("projects")]
        [JsonPropertyName("projects")]
        public string[]? Projects { get; set; }
    }
}