import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:meta/meta.dart'; import 'package:afterwork/data/models/event_model.dart'; import 'package:afterwork/data/datasources/event_remote_data_source.dart'; // Déclaration des événements @immutable abstract class EventEvent {} class LoadEvents extends EventEvent {} class AddEvent extends EventEvent { final EventModel event; AddEvent(this.event); } // Déclaration des états @immutable abstract class EventState {} class EventInitial extends EventState {} class EventLoading extends EventState {} class EventLoaded extends EventState { final List events; EventLoaded(this.events); } class EventError extends EventState { final String message; EventError(this.message); } // Bloc principal pour gérer la logique des événements class EventBloc extends Bloc { final EventRemoteDataSource remoteDataSource; EventBloc({required this.remoteDataSource}) : super(EventInitial()) { on(_onLoadEvents); on(_onAddEvent); } // Gestion de l'événement LoadEvents Future _onLoadEvents(LoadEvents event, Emitter emit) async { emit(EventLoading()); try { final events = await remoteDataSource.getAllEvents(); emit(EventLoaded(events)); print('Événements chargés avec succès.'); } catch (e) { emit(EventError('Erreur lors du chargement des événements.')); print('Erreur lors du chargement des événements: $e'); } } // Gestion de l'événement AddEvent Future _onAddEvent(AddEvent event, Emitter emit) async { emit(EventLoading()); try { await remoteDataSource.createEvent(event.event); final events = await remoteDataSource.getAllEvents(); emit(EventLoaded(events)); print('Événement ajouté avec succès.'); } catch (e) { emit(EventError('Erreur lors de l\'ajout de l\'événement.')); print('Erreur lors de l\'ajout de l\'événement: $e'); } } }