namespace Fitness_core_BE.DTOs.Booking { public class BookingDto { public Guid BookingId { get; set; } /// Null for a WalkIn booking (no pre-created session). public Guid? FacilitySessionId { get; set; } public Guid FacilityId { get; set; } public string? FacilityName { get; set; } /// "Scheduled" | "WalkIn" -- tells the FE which action set applies (e.g. WalkIn /// bookings can be rescheduled to any free time; Scheduled ones only to another /// session). public string BookingMode { get; set; } = string.Empty; public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } /// Informational headcount, WalkIn only. public int? PartySize { get; set; } public bool IsGuest { get; set; } public Guid? CustomerId { get; set; } public string? GuestName { get; set; } public string? GuestPhone { get; set; } /// Only populated in the response right after booking creation -- the /// guest's receipt. Never returned by list/lookup endpoints afterward. public string? OtpCode { get; set; } public bool OtpVerified { get; set; } public Guid? RfidTagId { get; set; } public string? RfidTagLabel { get; set; } public DateTime? RfidAssignedAt { get; set; } public DateTime? RfidReturnedAt { get; set; } public string PaymentStatus { get; set; } = string.Empty; public decimal AmountCharged { get; set; } /// "Cash" | "Bank". Null until PaymentStatus becomes "Paid". public string? PaymentMethod { get; set; } public DateTime? PaidAt { get; set; } public string Status { get; set; } = string.Empty; public DateTime BookedAt { get; set; } public DateTime? CheckedInAt { get; set; } public DateTime? CheckedOutAt { get; set; } /// A public, unauthenticated link to this booking's confirmation page -- /// copy-paste-and-share receipt. Works for both member and guest bookings. public string? ShareUrl { get; set; } } }