namespace CMSMicroservice.Domain.Entities;

/// <summary>
/// خرید پکیج توسط کاربر
/// این جدول پشتیبانی از خرید چندین پکیج توسط یک کاربر را فراهم می‌کند
/// </summary>
public class UserPackagePurchase : BaseAuditableEntity
{
    /// <summary>
    /// شناسه کاربر
    /// </summary>
    public long UserId { get; set; }

    /// <summary>
    /// User Navigation Property
    /// </summary>
    public virtual User User { get; set; }

    /// <summary>
    /// شناسه پکیج
    /// </summary>
    public long PackageId { get; set; }

    /// <summary>
    /// Package Navigation Property
    /// </summary>
    public virtual Package Package { get; set; }

    /// <summary>
    /// نحوه خرید پکیج (دایا، خرید مستقیم)
    /// </summary>
    public PackagePurchaseMethod PurchaseMethod { get; set; }

    /// <summary>
    /// تاریخ خرید
    /// </summary>
    public DateTime PurchasedAt { get; set; }

    /// <summary>
    /// مبلغ پرداختی (ریال)
    /// </summary>
    public long Amount { get; set; }

    /// <summary>
    /// شناسه سفارش مرتبط (اختیاری)
    /// </summary>
    public long? OrderId { get; set; }

    /// <summary>
    /// UserOrder Navigation Property
    /// </summary>
    public virtual UserOrder? Order { get; set; }

    /// <summary>
    /// شناسه تراکنش مرتبط (اختیاری)
    /// </summary>
    public long? TransactionId { get; set; }

    /// <summary>
    /// Transaction Navigation Property
    /// </summary>
    public virtual Transaction? Transaction { get; set; }
}
