namespace Fitness_core_BE.DTOs.CustomerPlan { public class CustomerPlanDto { public Guid CustomerPlanId { get; set; } public Guid FKClientId { get; set; } public string? ClientName { get; set; } public string? PlanName { get; set; } public string? PlanDescription { get; set; } public decimal PlanPrice { get; set; } public bool HasOnboardingFee { get; set; } public decimal OnboardingFeeAmount { get; set; } public int DurationInDays { get; set; } public string PlanScope { get; set; } = "Individual"; public int MemberLimit { get; set; } = 1; public string DurationMode { get; set; } = "Rolling"; public DateTime? ValidFrom { get; set; } public DateTime? ValidTo { get; set; } public bool AllowSplitPayments { get; set; } public int InstallmentCount { get; set; } = 1; public int? SessionsPerCycle { get; set; } public string SessionRolloverPolicy { get; set; } = "NoRollover"; public int RolloverGraceDays { get; set; } public string BillingTiming { get; set; } = "Prepaid"; public bool IsActive { get; set; } public DateTime CreatedAt { get; set; } // Which Places this plan grants access to. Empty = unrestricted (reaches every // active device) -- see AccessDeviceService's allowed-device resolution. public List PlaceIds { get; set; } = new(); public List PlaceNames { get; set; } = new(); } }