172 lines
5.7 KiB
C#
172 lines
5.7 KiB
C#
// ***********************************************************************
|
|
// <copyright file="UserAdapter.cs">
|
|
// Heath
|
|
// </copyright>
|
|
// ***********************************************************************
|
|
using Core.Cerberos.Adapters.Common.Enums;
|
|
using MongoDB.Bson;
|
|
using MongoDB.Bson.Serialization.Attributes;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace Core.Cerberos.Adapters
|
|
{
|
|
/// <summary>
|
|
/// Adapter representing a user.
|
|
/// </summary>
|
|
public class UserAdapter : BaseAdapterResponse
|
|
{
|
|
/// <summary>
|
|
/// Gets or sets the unique identifier of the user.
|
|
/// </summary>
|
|
[BsonId]
|
|
[BsonElement("_id")]
|
|
[BsonRepresentation(BsonType.ObjectId)]
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the guid of the user.
|
|
/// </summary>
|
|
[BsonElement("guid")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("guid")]
|
|
public string? Guid { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the email address of the user.
|
|
/// </summary>
|
|
[BsonElement("email")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("email")]
|
|
public string Email { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the name of the user.
|
|
/// </summary>
|
|
[BsonElement("name")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("name")]
|
|
public string Name { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the middlename of the user.
|
|
/// </summary>
|
|
[BsonElement("middleName")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("middleName")]
|
|
public string? MiddleName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the last name of the user.
|
|
/// </summary>
|
|
[BsonElement("lastName")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("lastName")]
|
|
public string LastName { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the name of the user.
|
|
/// </summary>
|
|
[BsonElement("displayName")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("displayName")]
|
|
public string? DisplayName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the role ID of the user.
|
|
/// </summary>
|
|
[BsonElement("roleId")]
|
|
[BsonRepresentation(BsonType.ObjectId)]
|
|
[JsonPropertyName("roleId")]
|
|
public string RoleId { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the array of companies associated with the user.
|
|
/// </summary>
|
|
[BsonElement("companies")]
|
|
[JsonPropertyName("companies")]
|
|
public string[] Companies { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the array of projects associated with the user.
|
|
/// </summary>
|
|
[BsonElement("projects")]
|
|
[JsonPropertyName("projects")]
|
|
public string[]? Projects { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the boolean of the consent form accepted by the user.
|
|
/// </summary>
|
|
[BsonElement("consentFormAccepted")]
|
|
[JsonPropertyName("consentFormAccepted")]
|
|
[BsonIgnoreIfNull]
|
|
public bool ConsentFormAccepted { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the timestamp of the last login of the user.
|
|
/// </summary>
|
|
[BsonElement("lastLogIn")]
|
|
[BsonRepresentation(BsonType.DateTime)]
|
|
[JsonPropertyName("lastLogIn")]
|
|
public DateTime? LastLogIn { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the timestamp of the last logout of the user.
|
|
/// </summary>
|
|
[BsonElement("lastLogOut")]
|
|
[BsonRepresentation(BsonType.DateTime)]
|
|
[JsonPropertyName("lastLogOut")]
|
|
public DateTime? LastLogOut { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// Gets or sets the token associated with the user.
|
|
/// </summary>
|
|
[BsonElement("token")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("token")]
|
|
public string? Token { get; set; } = null;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the date and time when the entity was created.
|
|
/// </summary>
|
|
[BsonElement("createdAt")]
|
|
[BsonRepresentation(BsonType.DateTime)]
|
|
[JsonPropertyName("createdAt")]
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the user who created the entity.
|
|
/// </summary>
|
|
[BsonElement("createdBy")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("createdBy")]
|
|
public string? CreatedBy { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the date and time when the entity was last updated.
|
|
/// </summary>
|
|
[BsonElement("updatedAt")]
|
|
[BsonRepresentation(BsonType.DateTime)]
|
|
[JsonPropertyName("updatedAt")]
|
|
public DateTime? UpdatedAt { get; set; } = null;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the user who last updated the entity.
|
|
/// </summary>
|
|
[BsonElement("updatedBy")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("updatedBy")]
|
|
public string? UpdatedBy { get; set; } = null;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the status of the entity.
|
|
/// </summary>
|
|
[BsonElement("status")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("status")]
|
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
|
public StatusEnum Status { get; set; } = StatusEnum.Active;
|
|
}
|
|
}
|