namespace CMSMicroservice.Domain.Entities.DiscountShop;

/// <summary>
/// جزئیات سفارش فروشگاه تخفیفی
/// هر ردیف یک محصول و تعداد آن را نشان می‌دهد
/// </summary>
public class DiscountOrderDetail : BaseAuditableEntity
{
    /// <summary>
    /// شناسه سفارش
    /// </summary>
    public long DiscountOrderId { get; set; }
    
    /// <summary>
    /// شناسه محصول
    /// </summary>
    public long ProductId { get; set; }
    
    /// <summary>
    /// تعداد
    /// </summary>
    public int Count { get; set; }
    
    /// <summary>
    /// قیمت واحد (هنگام خرید)
    /// قیمت ممکن است در آینده تغییر کند، پس در زمان خرید ذخیره می‌شود
    /// </summary>
    public long UnitPrice { get; set; }
    
    /// <summary>
    /// درصد تخفیف استفاده شده از DiscountBalance
    /// این درصد محدود به MaxDiscountPercent محصول است
    /// </summary>
    public int DiscountPercentUsed { get; set; }
    
    /// <summary>
    /// مبلغ تخفیف استفاده شده برای این محصول
    /// DiscountAmount = (UnitPrice × Count) × (DiscountPercentUsed / 100)
    /// </summary>
    public long DiscountAmount { get; set; }
    
    /// <summary>
    /// مبلغ نهایی پرداختی برای این محصول
    /// FinalPrice = (UnitPrice × Count) - DiscountAmount
    /// </summary>
    public long FinalPrice { get; set; }
    
    // ============= Navigation Properties =============
    
    /// <summary>
    /// سفارش
    /// </summary>
    public virtual DiscountOrder DiscountOrder { get; set; }
    
    /// <summary>
    /// محصول
    /// </summary>
    public virtual DiscountProduct Product { get; set; }
}
