using MembershipService.Domain.SeedWork;

namespace MembershipService.Domain.AggregatesModel.MemberAggregate;

/// <summary>
/// EN: Membership level enumeration (Free, Basic, Premium).
/// VI: Enumeration cấp thành viên (Miễn phí, Cơ bản, Cao cấp).
/// </summary>
public class MembershipLevel : Enumeration
{
    /// <summary>
    /// EN: Free membership level - basic features.
    /// VI: Cấp thành viên miễn phí - tính năng cơ bản.
    /// </summary>
    public static readonly MembershipLevel Free = new(1, "Free");
    
    /// <summary>
    /// EN: Basic membership level - standard features.
    /// VI: Cấp thành viên cơ bản - tính năng tiêu chuẩn.
    /// </summary>
    public static readonly MembershipLevel Basic = new(2, "Basic");
    
    /// <summary>
    /// EN: Premium membership level - all features.
    /// VI: Cấp thành viên cao cấp - tất cả tính năng.
    /// </summary>
    public static readonly MembershipLevel Premium = new(3, "Premium");

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

    /// <summary>
    /// EN: Get all membership levels.
    /// VI: Lấy tất cả các cấp thành viên.
    /// </summary>
    public static IEnumerable<MembershipLevel> List() => GetAll<MembershipLevel>();
}
