// lib/features/booking/services/booking_service.dart import '../../../core/api/api_client.dart'; import '../../../core/api/api_endpoints.dart'; import '../models/booking_models.dart'; class BookingService { final ApiClient _api = ApiClient(); /// Fetch available ticket types for an event. Future> getTicketMeta(int eventId) async { final res = await _api.post( ApiEndpoints.ticketMetaList, body: {'event_id': eventId}, ); final rawList = res['ticket_metas'] ?? res['tickets'] ?? res['data'] ?? []; if (rawList is List) { return rawList .map((e) => TicketMetaModel.fromJson(Map.from(e as Map))) .toList(); } return []; } /// Add item to cart. Future> addToCart({ required int ticketMetaId, required int quantity, }) async { return await _api.post( ApiEndpoints.cartAdd, body: {'ticket_meta_id': ticketMetaId, 'quantity': quantity}, ); } /// Process checkout — creates booking + returns order ID for payment. Future> processCheckout({ required int eventId, required List> tickets, required Map shippingDetails, String? couponCode, }) async { return await _api.post( ApiEndpoints.checkout, body: { 'event_id': eventId, 'tickets': tickets, 'shipping': shippingDetails, if (couponCode != null) 'coupon_code': couponCode, }, ); } }