using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Fitness_core_BE.Models.Enums; namespace Fitness_core_BE.Models { public class PaymentTransaction { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid AttemptId { get; set; } public DateTime? PayDate { get; set; } public string PayStatus { get; set; } public decimal PayAmount { get; set; } public string? PayNote { get; set; } public Guid? FK_CardId { get; set; } [ForeignKey("FK_CardId")] public virtual CustomerCards? CustomerCard { get; set; } public Guid? FK_CustomerInvoiceId { get; set; } [ForeignKey("FK_CustomerInvoiceId")] public virtual CustomerInvoice? CustomerInvoice { get; set; } public Guid? FK_ClientInvoiceId { get; set; } [ForeignKey("FK_ClientInvoiceId")] public virtual ClientInvoice? ClientInvoice { get; set; } public Guid? FK_ClientId { get; set; } [ForeignKey("FK_ClientId")] public virtual Client? Client { get; set; } public Guid? FK_CustomerId { get; set; } [ForeignKey("FK_CustomerId")] public virtual Customer? Customer { get; set; } public BeneficiaryType? BeneficiaryType { get; set; } public string? RefType { get; set; } = "installment"; // How a manually-recorded (counter) payment was actually taken -- "Cash" | "Bank". // Left null for gateway/auto-charge attempts, where the method is implied elsewhere. public string? PaymentMethod { get; set; } public string? BankRefNo { get; set; } public string? PaymentReferenceId { get; set; } public bool? IsActive { get; set; } = true; public bool? IsApproved { get; set; } = false; } }