import 'package:equatable/equatable.dart'; import '../../../../core/models/evenement_model.dart'; /// Événements du BLoC Evenement abstract class EvenementEvent extends Equatable { const EvenementEvent(); @override List get props => []; } /// Charge les événements à venir class LoadEvenementsAVenir extends EvenementEvent { final int page; final int size; final bool refresh; const LoadEvenementsAVenir({ this.page = 0, this.size = 10, this.refresh = false, }); @override List get props => [page, size, refresh]; } /// Charge les événements publics class LoadEvenementsPublics extends EvenementEvent { final int page; final int size; final bool refresh; const LoadEvenementsPublics({ this.page = 0, this.size = 20, this.refresh = false, }); @override List get props => [page, size, refresh]; } /// Charge tous les événements class LoadEvenements extends EvenementEvent { final int page; final int size; final String sortField; final String sortDirection; final bool refresh; const LoadEvenements({ this.page = 0, this.size = 20, this.sortField = 'dateDebut', this.sortDirection = 'asc', this.refresh = false, }); @override List get props => [page, size, sortField, sortDirection, refresh]; } /// Charge un événement par ID class LoadEvenementById extends EvenementEvent { final String id; const LoadEvenementById(this.id); @override List get props => [id]; } /// Recherche d'événements class SearchEvenements extends EvenementEvent { final String terme; final int page; final int size; final bool refresh; const SearchEvenements({ required this.terme, this.page = 0, this.size = 20, this.refresh = false, }); @override List get props => [terme, page, size, refresh]; } /// Filtre par type d'événement class FilterEvenementsByType extends EvenementEvent { final TypeEvenement type; final int page; final int size; final bool refresh; const FilterEvenementsByType({ required this.type, this.page = 0, this.size = 20, this.refresh = false, }); @override List get props => [type, page, size, refresh]; } /// Crée un nouvel événement class CreateEvenement extends EvenementEvent { final EvenementModel evenement; const CreateEvenement(this.evenement); @override List get props => [evenement]; } /// Met à jour un événement class UpdateEvenement extends EvenementEvent { final String id; final EvenementModel evenement; const UpdateEvenement(this.id, this.evenement); @override List get props => [id, evenement]; } /// Supprime un événement class DeleteEvenement extends EvenementEvent { final String id; const DeleteEvenement(this.id); @override List get props => [id]; } /// Change le statut d'un événement class ChangeStatutEvenement extends EvenementEvent { final String id; final StatutEvenement nouveauStatut; const ChangeStatutEvenement(this.id, this.nouveauStatut); @override List get props => [id, nouveauStatut]; } /// Charge les statistiques class LoadStatistiquesEvenements extends EvenementEvent { const LoadStatistiquesEvenements(); } /// Réinitialise l'état class ResetEvenementState extends EvenementEvent { const ResetEvenementState(); }