using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Domain.Entities.Payment;
///
/// پرداخت دستی توسط Admin/SuperAdmin
/// برای موارد خاص: واریز نقدی، تسویه حساب، اصلاح خطا
///
public class ManualPayment : BaseAuditableEntity
{
///
/// شناسه کاربری که پرداخت برای او ثبت میشود
///
public long UserId { get; set; }
///
/// User Navigation Property
///
public virtual User User { get; set; } = null!;
///
/// مبلغ تراکنش (ریال)
///
public long Amount { get; set; }
///
/// نوع تراکنش دستی
///
public ManualPaymentType Type { get; set; }
///
/// توضیحات (اجباری)
///
public string Description { get; set; } = string.Empty;
///
/// شماره مرجع یا شماره فیش (اختیاری)
///
public string? ReferenceNumber { get; set; }
///
/// وضعیت تایید
///
public ManualPaymentStatus Status { get; set; } = ManualPaymentStatus.Pending;
///
/// شناسه Admin که درخواست را ثبت کرده
///
public long RequestedBy { get; set; }
///
/// شناسه SuperAdmin که تایید/رد کرده (nullable)
///
public long? ApprovedBy { get; set; }
///
/// تاریخ تایید/رد
///
public DateTime? ApprovedAt { get; set; }
///
/// دلیل رد (در صورت رد شدن)
///
public string? RejectionReason { get; set; }
///
/// شناسه تراکنش ایجاد شده (بعد از تایید)
///
public long? TransactionId { get; set; }
///
/// Transaction Navigation Property
///
public virtual Transaction? Transaction { get; set; }
}