using IamService.Domain.SeedWork;

namespace IamService.Domain.AggregatesModel.UserAggregate;

/// <summary>
/// EN: User status enumeration.
/// VI: Enumeration trạng thái user.
/// </summary>
public class UserStatus : Enumeration
{
    public static readonly UserStatus Active = new(1, nameof(Active));
    public static readonly UserStatus Locked = new(2, nameof(Locked));
    public static readonly UserStatus Disabled = new(3, nameof(Disabled));
    public static readonly UserStatus PendingVerification = new(4, nameof(PendingVerification));

    public UserStatus(int id, string name) : base(id, name)
    {
    }

    /// <summary>
    /// EN: Get all user statuses.
    /// VI: Lấy tất cả trạng thái user.
    /// </summary>
    public static IEnumerable<UserStatus> GetAll() =>
    [
        Active,
        Locked,
        Disabled,
        PendingVerification
    ];
}
