// EN: Order status enumeration.
// VI: Enumeration trạng thái đơn hàng.

using OrderService.Domain.SeedWork;

namespace OrderService.Domain.AggregatesModel.OrderAggregate;

/// <summary>
/// EN: Order status enumeration.
/// VI: Enumeration trạng thái đơn hàng.
/// </summary>
public class OrderStatus : Enumeration
{
    /// <summary>
    /// EN: Order created but not validated yet.
    /// VI: Đơn hàng được tạo nhưng chưa được xác thực.
    /// </summary>
    public static readonly OrderStatus Draft = new(1, nameof(Draft));
    
    /// <summary>
    /// EN: All items validated and available.
    /// VI: Tất cả items đã được xác thực và có sẵn.
    /// </summary>
    public static readonly OrderStatus Validated = new(2, nameof(Validated));
    
    /// <summary>
    /// EN: Payment processed successfully.
    /// VI: Thanh toán đã được xử lý thành công.
    /// </summary>
    public static readonly OrderStatus Paid = new(3, nameof(Paid));
    
    /// <summary>
    /// EN: Order is being processed (items being executed).
    /// VI: Đơn hàng đang được xử lý (items đang được thực thi).
    /// </summary>
    public static readonly OrderStatus Processing = new(4, nameof(Processing));
    
    /// <summary>
    /// EN: Order completed successfully.
    /// VI: Đơn hàng hoàn thành thành công.
    /// </summary>
    public static readonly OrderStatus Completed = new(5, nameof(Completed));
    
    /// <summary>
    /// EN: Order cancelled.
    /// VI: Đơn hàng đã bị hủy.
    /// </summary>
    public static readonly OrderStatus Cancelled = new(6, nameof(Cancelled));

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