using TakeoutSaaS.Domain.Products.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Products.Entities;

/// <summary>
/// 商品（SPU）信息。
/// </summary>
public sealed class Product : MultiTenantEntityBase
{
    /// <summary>
    /// 所属门店。
    /// </summary>
    public long StoreId { get; set; }

    /// <summary>
    /// 所属分类。
    /// </summary>
    public long CategoryId { get; set; }

    /// <summary>
    /// 商品编码。
    /// </summary>
    public string SpuCode { get; set; } = string.Empty;

    /// <summary>
    /// 商品名称。
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// 副标题/卖点。
    /// </summary>
    public string? Subtitle { get; set; }

    /// <summary>
    /// 售卖单位（份/杯等）。
    /// </summary>
    public string? Unit { get; set; }

    /// <summary>
    /// 现价。
    /// </summary>
    public decimal Price { get; set; }

    /// <summary>
    /// 原价。
    /// </summary>
    public decimal? OriginalPrice { get; set; }

    /// <summary>
    /// 库存数量（可选）。
    /// </summary>
    public int? StockQuantity { get; set; }

    /// <summary>
    /// 最大每单限购。
    /// </summary>
    public int? MaxQuantityPerOrder { get; set; }

    /// <summary>
    /// 商品状态。
    /// </summary>
    public ProductStatus Status { get; set; } = ProductStatus.Draft;

    /// <summary>
    /// 主图。
    /// </summary>
    public string? CoverImage { get; set; }

    /// <summary>
    /// Gallery 图片逗号分隔。
    /// </summary>
    public string? GalleryImages { get; set; }

    /// <summary>
    /// 商品描述。
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// 支持堂食。
    /// </summary>
    public bool EnableDineIn { get; set; } = true;

    /// <summary>
    /// 支持自提。
    /// </summary>
    public bool EnablePickup { get; set; } = true;

    /// <summary>
    /// 支持配送。
    /// </summary>
    public bool EnableDelivery { get; set; } = true;

    /// <summary>
    /// 是否热门推荐。
    /// </summary>
    public bool IsFeatured { get; set; }
}
