namespace Fitness_core_BE.DTOs.PlatformBilling { // The gym's own saved card(s) for paying their HexaFitness platform subscription // (ClientCard), and the transaction history behind those charges. Distinct from // PaymentGatewayDtos.cs (admin gateway catalog) and PaymentsEnablementDtos.cs // (payout track/KYC/wallet) — this is the "gym pays HexaFitness" card-charging surface. // Fetched live from Payment-Service on every call — CardToken is the identifier (not a // local id), and none of these fields are ever cached in Core's own database. public class ClientCardDto { public string CardToken { get; set; } = string.Empty; public string MaskedPan { get; set; } = string.Empty; public string CardBrand { get; set; } = string.Empty; public int ExpiryMonth { get; set; } public int ExpiryYear { get; set; } public bool IsDefault { get; set; } } public class StartCardOnboardingRequest { public string? CardLabel { get; set; } public string? ReturnUrl { get; set; } } public class StartCardOnboardingResult { public string RedirectUrl { get; set; } = string.Empty; public string SessionId { get; set; } = string.Empty; } public class CardOnboardingStatusResult { public bool IsComplete { get; set; } public ClientCardDto? Card { get; set; } } public class TransactionHistoryItemDto { public Guid PaymentId { get; set; } public decimal AmountMinorUnits { get; set; } public string Currency { get; set; } = string.Empty; public string Status { get; set; } = string.Empty; public DateTime CreatedAtUtc { get; set; } } public class TransactionHistoryResult { public int Total { get; set; } public int Page { get; set; } public List Items { get; set; } = new(); } }