namespace CMSMicroservice.Domain.Entities.DiscountShop;

/// <summary>
/// محصول فروشگاه تخفیفی باشگاه
/// در این فروشگاه کاربر با ترکیب DiscountBalance و پرداخت واقعی خرید می‌کند
/// </summary>
public class DiscountProduct : BaseAuditableEntity
{
    /// <summary>
    /// عنوان محصول
    /// </summary>
    public string Title { get; set; }
    
    /// <summary>
    /// توضیحات مختصر
    /// </summary>
    public string ShortInfomation { get; set; }
    
    /// <summary>
    /// توضیحات کامل
    /// </summary>
    public string FullInformation { get; set; }
    
    /// <summary>
    /// قیمت اصلی محصول (ریال)
    /// </summary>
    public long Price { get; set; }
    
    /// <summary>
    /// حداکثر درصد تخفیفی که از DiscountBalance قابل استفاده است (0 تا 100)
    /// مثال: 30 یعنی حداکثر 30% از قیمت را می‌توان با DiscountBalance پرداخت کرد
    /// </summary>
    public int MaxDiscountPercent { get; set; }
    
    /// <summary>
    /// امتیاز محصول (0 تا 5)
    /// </summary>
    public int Rate { get; set; }
    
    /// <summary>
    /// آدرس تصویر اصلی
    /// </summary>
    public string ImagePath { get; set; }
    
    /// <summary>
    /// آدرس تصویر کوچک (Thumbnail)
    /// </summary>
    public string ThumbnailPath { get; set; }
    
    /// <summary>
    /// تعداد فروش
    /// </summary>
    public int SaleCount { get; set; }
    
    /// <summary>
    /// تعداد بازدید
    /// </summary>
    public int ViewCount { get; set; }
    
    /// <summary>
    /// موجودی انبار
    /// </summary>
    public int RemainingCount { get; set; }
    
    /// <summary>
    /// وضعیت فعال/غیرفعال
    /// </summary>
    public bool IsActive { get; set; }
    
    // ============= Navigation Properties =============
    
    /// <summary>
    /// سبدهای خریدی که این محصول در آن‌ها است
    /// </summary>
    public virtual ICollection<DiscountShoppingCart> ShoppingCarts { get; set; }
    
    /// <summary>
    /// جزئیات سفارشات شامل این محصول
    /// </summary>
    public virtual ICollection<DiscountOrderDetail> OrderDetails { get; set; }
    
    /// <summary>
    /// دسته‌بندی‌های این محصول
    /// </summary>
    public virtual ICollection<DiscountProductCategory> ProductCategories { get; set; }
    
    /// <summary>
    /// تصاویر گالری محصول
    /// </summary>
    public virtual ICollection<DiscountProductImage> Images { get; set; }
}
