using CMSMicroservice.Domain.Enums;
using CMSMicroservice.Domain.Entities.Order;

namespace CMSMicroservice.Domain.Entities;
//سفارش کاربر
public class UserOrder : BaseAuditableEntity
{
    //قیمت
    public long Amount { get; set; }
    //شناسه پکیج
    public long? PackageId { get; set; }
    //Package Navigation Property
    public virtual Package? Package { get; set; }
    //شناسه تراکنش
    public long? TransactionId { get; set; }
    //Transaction Navigation Property
    public virtual Transaction? Transaction { get; set; }
    //وضعیت پرداخت
    public PaymentStatus PaymentStatus { get; set; } 
    //تاریخ پرداخت
    public DateTime? PaymentDate { get; set; }
    //شناسه کاربر
    public long UserId { get; set; }
    //User Navigation Property
    public virtual User User { get; set; }
    //شناسه آدرس کاربر
    public long UserAddressId { get; set; }
    //UserAddress Navigation Property
    public virtual UserAddress UserAddress { get; set; }
    public PaymentMethod? PaymentMethod { get; set; }
    // وضعیت ارسال سفارش
    public DeliveryStatus DeliveryStatus { get; set; }
    // کد رهگیری مرسوله (در صورت وجود)
    public string? TrackingCode { get; set; }
    // توضیحات وضعیت ارسال / نکات پستی
    public string? DeliveryDescription { get; set; }
    
    /// <summary>
    /// آیا این سفارش شامل مالیات است
    /// </summary>
    public bool HasVAT { get; set; }
    
    /// <summary>
    /// OrderVAT Navigation Property (اطلاعات مالیات)
    /// </summary>
    public virtual OrderVAT? OrderVAT { get; set; }
    
    //FactorDetails Collection Navigation Reference
    public virtual ICollection<FactorDetails> FactorDetails { get; set; }
}
