import 'package:em2rp/services/api_service.dart'; /// Repository pour gérer toutes les opérations sur les options et types d'événements. class OptionRepository { final ApiService _apiService; OptionRepository(this._apiService); /// Récupère toutes les options Future>> getOptions() async { try { final result = await _apiService.call('getOptions', {}); final options = result['options'] as List?; if (options == null) return []; return options.map((e) => e as Map).toList(); } catch (e) { throw Exception('Erreur lors de la récupération des options: $e'); } } /// Récupère tous les types d'événements Future>> getEventTypes() async { try { final result = await _apiService.call('getEventTypes', {}); final eventTypes = result['eventTypes'] as List?; if (eventTypes == null) return []; return eventTypes.map((e) => e as Map).toList(); } catch (e) { throw Exception( 'Erreur lors de la récupération des types d\'événements: $e'); } } /// Crée un type d'événement Future createEventType({ required String name, required double defaultPrice, }) async { try { final result = await _apiService.call('createEventType', { 'name': name, 'defaultPrice': defaultPrice, }); return result['id'] as String; } catch (e) { throw Exception('Erreur lors de la création du type d\'événement: $e'); } } /// Met à jour un type d'événement Future updateEventType({ required String eventTypeId, String? name, double? defaultPrice, }) async { try { final data = {'eventTypeId': eventTypeId}; if (name != null) data['name'] = name; if (defaultPrice != null) data['defaultPrice'] = defaultPrice; await _apiService.call('updateEventType', data); } catch (e) { throw Exception('Erreur lors de la mise à jour du type d\'événement: $e'); } } /// Supprime un type d'événement Future deleteEventType(String eventTypeId) async { try { await _apiService.call('deleteEventType', {'eventTypeId': eventTypeId}); } catch (e) { throw Exception('Erreur lors de la suppression du type d\'événement: $e'); } } /// Crée une option Future createOption(String code, Map data) async { try { final requestData = { 'id': code, 'code': code, ...data }; final result = await _apiService.call('createOption', requestData); return result['id'] as String? ?? code; } catch (e) { throw Exception('Erreur lors de la création de l\'option: $e'); } } /// Met à jour une option Future updateOption(String optionId, Map data) async { try { final requestData = {'optionId': optionId, 'data': data}; await _apiService.call('updateOption', requestData); } catch (e) { throw Exception('Erreur lors de la mise à jour de l\'option: $e'); } } /// Supprime une option Future deleteOption(String optionId) async { try { await _apiService.call('deleteOption', {'optionId': optionId}); } catch (e) { throw Exception('Erreur lors de la suppression de l\'option: $e'); } } }