// EN: Product type enumeration for polymorphic products.
// VI: Enumeration loại sản phẩm cho sản phẩm đa hình.

using CatalogService.Domain.SeedWork;

namespace CatalogService.Domain.AggregatesModel.ProductAggregate;

/// <summary>
/// EN: Product type enumeration - supports multi-vertical products.
/// VI: Enumeration loại sản phẩm - hỗ trợ sản phẩm đa ngành hàng.
/// </summary>
public class ProductType : Enumeration
{
    /// <summary>
    /// EN: Physical product (Retail) - requires inventory.
    /// VI: Sản phẩm vật lý (Bán lẻ) - cần quản lý tồn kho.
    /// </summary>
    public static readonly ProductType Physical = new(1, nameof(Physical));
    
    /// <summary>
    /// EN: Service product (Spa, Salon) - requires booking.
    /// VI: Sản phẩm dịch vụ (Spa, Salon) - cần đặt lịch.
    /// </summary>
    public static readonly ProductType Service = new(2, nameof(Service));
    
    /// <summary>
    /// EN: Prepared food product (FnB) - requires kitchen.
    /// VI: Sản phẩm thực phẩm chế biến (FnB) - cần bếp.
    /// </summary>
    public static readonly ProductType PreparedFood = new(3, nameof(PreparedFood));

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