namespace Fitness_core_BE.DTOs.CustomerSubscription { /// Full picture of one subscription: plan config, members, money, schedule. public class SubscriptionSummaryDto { public Guid SubscriptionId { get; set; } public Guid CustomerPlanId { get; set; } public string? PlanName { get; set; } public string PlanScope { get; set; } = "Individual"; public int MemberLimit { get; set; } = 1; public string DurationMode { get; set; } = "Rolling"; public bool AllowSplitPayments { get; set; } public decimal PlanPrice { get; set; } public DateTime OnboardDate { get; set; } public DateTime? ExpiryDate { get; set; } public DateTime? RenewalDate { get; set; } public bool IsActive { get; set; } public Guid? CustomerInvoiceId { get; set; } public decimal InvoiceAmount { get; set; } public decimal PaidAmount { get; set; } public decimal Balance { get; set; } public string PaymentStatus { get; set; } = "Pending"; public List Members { get; set; } = new(); public List Installments { get; set; } = new(); public bool AutoChargeEnabled { get; set; } public AutoChargeCardDto? AutoChargeCard { get; set; } } public class AutoChargeCardDto { public Guid CardId { get; set; } public string? CardLast4 { get; set; } public string? CardType { get; set; } } public class SubscriptionMemberDto { public Guid SubscriptionMemberId { get; set; } public Guid CustomerId { get; set; } public string? CusName { get; set; } public string? Email { get; set; } public string? PrimaryPH { get; set; } public bool IsPrimary { get; set; } public DateTime JoinedAt { get; set; } public bool IsActive { get; set; } /// False when unassigned from the plan but still a member of the gym. public bool IsPlanAssigned { get; set; } = true; } public class SubscriptionInstallmentDto { public Guid SubscriptionInstallmentId { get; set; } public int InstallmentNo { get; set; } public DateTime DueDate { get; set; } public decimal Amount { get; set; } public decimal PaidAmount { get; set; } public string Status { get; set; } = "Pending"; } }