using IamService.Domain.SeedWork;

namespace IamService.Domain.AggregatesModel.VerificationAggregate;

/// <summary>
/// EN: Verification type enumeration.
/// VI: Enumeration loại xác thực.
/// </summary>
public class VerificationType : Enumeration
{
    /// <summary>
    /// EN: Email verification.
    /// VI: Xác thực email.
    /// </summary>
    public static readonly VerificationType Email = new(1, nameof(Email));

    /// <summary>
    /// EN: Phone/SMS verification.
    /// VI: Xác thực điện thoại/SMS.
    /// </summary>
    public static readonly VerificationType Phone = new(2, nameof(Phone));

    /// <summary>
    /// EN: Document verification (KYC).
    /// VI: Xác thực tài liệu (KYC).
    /// </summary>
    public static readonly VerificationType Document = new(3, nameof(Document));

    /// <summary>
    /// EN: Identity verification.
    /// VI: Xác thực danh tính.
    /// </summary>
    public static readonly VerificationType Identity = new(4, nameof(Identity));

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

    /// <summary>
    /// EN: Get all verification types.
    /// VI: Lấy tất cả loại xác thực.
    /// </summary>
    public static IEnumerable<VerificationType> GetAll() =>
    [
        Email,
        Phone,
        Document,
        Identity
    ];
}
