using adas_core.Domain.Enums;
using MongoDB.Bson;

namespace adas_core.Domain.Models.MongoModels;

/// <summary>
/// Represents a user within the system, encapsulating user-related data and behavior.
/// </summary>
public class User
{
    public ObjectId Id { get; set; }
    public string UserName { get; set; } = string.Empty;
    public string Password { get; set; } = string.Empty;
    public string Name { get; set; } = string.Empty;
    public string Email { get; set; } = string.Empty;
    public DateTime? LockExpirationDate { get; set; }
    public bool IsEnabled { get; set; } = true;
    public DateTime? LastLogin { get; set; }
    public UserEnum.Type Type { get; set; } = UserEnum.Type.Local;

    #region NotMapped

    public List<Authorization>? Authorization { get; set; }
    public string IpAddress { get; set; } = string.Empty;

    #endregion
}