using Microsoft.AspNetCore.Http; namespace Fitness_core_BE.Interfaces.Services { public interface IBookingService { /// Logged-in member books a session against their own plan's allowance. Task CreateMemberBooking(object payload, HttpContext httpContext); /// No membership at all -- pay-per-session, identity proof is the returned OTP. Task CreateGuestBooking(object payload, HttpContext httpContext); /// Member books an AdHoc-mode facility directly for an arbitrary time window, no /// pre-created session. Task CreateMemberAdhocBooking(object payload, HttpContext httpContext); /// Guest/staff walk-in books an AdHoc-mode facility directly. Task CreateGuestAdhocBooking(object payload, HttpContext httpContext); /// Renders the public, unauthenticated confirmation page a booking's ShareUrl /// points to -- the "copy the link and share it" receipt. Returns null if not found, so /// the controller can render a 404 page instead of a JSON error for a browser hit. Task GetBookingView(object payload); /// Staff records a guest booking's payment (cash/bank/at-venue) after the fact. Task MarkGuestBookingPaid(object payload, HttpContext httpContext); /// Staff/door check-in: verifies the OTP, optionally assigns an RFID tag, marks /// the booking checked in. Also lazily sweeps this client's overdue bookings first (see /// BookingService.SweepOverdueBookingsAsync) instead of a background job. Task CheckInBooking(object payload, HttpContext httpContext); Task CancelBooking(object payload, HttpContext httpContext); /// Staff hands a Confirmed guest booking to a different person (name/phone) -- /// no cancel/recreate needed. Guest bookings only. Task ReassignBooking(object payload, HttpContext httpContext); /// Staff moves a Confirmed booking to a different time (AdHoc) or session /// (Scheduled), only onto a slot with room. Task RescheduleBooking(object payload, HttpContext httpContext); /// Staff manually flags a Confirmed, never-arrived booking. Task MarkNoShow(object payload, HttpContext httpContext); /// Staff manually ends a CheckedIn booking early (before the lazy sweep would /// catch it), releasing its RFID tag if any. Task CompleteBooking(object payload, HttpContext httpContext); Task GetMyBookings(object payload, HttpContext httpContext); Task GetSessionBookings(object payload, HttpContext httpContext); /// Unified roster covering both booking modes. Task GetBookings(object payload, HttpContext httpContext); } }