namespace PromotionService.Domain.AggregatesModel.CampaignAggregate;

using PromotionService.Domain.SeedWork;

/// <summary>
/// EN: Status of the marketing campaign.
/// VI: Trạng thái của chiến dịch marketing.
/// </summary>
public class CampaignStatus : Enumeration
{
    /// <summary>
    /// EN: Draft - campaign is being prepared.
    /// VI: Nháp - chiến dịch đang được chuẩn bị.
    /// </summary>
    public static readonly CampaignStatus Draft = new(1, nameof(Draft));

    /// <summary>
    /// EN: Active - campaign is running, vouchers can be claimed.
    /// VI: Hoạt động - chiến dịch đang chạy, voucher có thể được nhận.
    /// </summary>
    public static readonly CampaignStatus Active = new(2, nameof(Active));

    /// <summary>
    /// EN: Paused - campaign is temporarily stopped.
    /// VI: Tạm dừng - chiến dịch tạm thời dừng.
    /// </summary>
    public static readonly CampaignStatus Paused = new(3, nameof(Paused));

    /// <summary>
    /// EN: Completed - campaign has ended normally.
    /// VI: Hoàn thành - chiến dịch đã kết thúc bình thường.
    /// </summary>
    public static readonly CampaignStatus Completed = new(4, nameof(Completed));

    /// <summary>
    /// EN: Cancelled - campaign was cancelled, escrow released.
    /// VI: Hủy bỏ - chiến dịch bị hủy, escrow được giải phóng.
    /// </summary>
    public static readonly CampaignStatus Cancelled = new(5, nameof(Cancelled));

    protected CampaignStatus() : base(0, "Unknown") { }
    public CampaignStatus(int id, string name) : base(id, name) { }
}
