/// Événements pour le BLoC des organisations library organizations_event; import 'package:equatable/equatable.dart'; import '../data/models/organization_model.dart'; /// Classe de base pour tous les événements des organisations abstract class OrganizationsEvent extends Equatable { const OrganizationsEvent(); @override List get props => []; } /// Événement pour charger la liste des organisations class LoadOrganizations extends OrganizationsEvent { final int page; final int size; final String? recherche; final bool refresh; const LoadOrganizations({ this.page = 0, this.size = 20, this.recherche, this.refresh = false, }); @override List get props => [page, size, recherche, refresh]; } /// Événement pour charger plus d'organisations (pagination) class LoadMoreOrganizations extends OrganizationsEvent { const LoadMoreOrganizations(); } /// Événement pour rechercher des organisations class SearchOrganizations extends OrganizationsEvent { final String query; const SearchOrganizations(this.query); @override List get props => [query]; } /// Événement pour recherche avancée class AdvancedSearchOrganizations extends OrganizationsEvent { final String? nom; final TypeOrganization? type; final StatutOrganization? statut; final String? ville; final String? region; final String? pays; final int page; final int size; const AdvancedSearchOrganizations({ this.nom, this.type, this.statut, this.ville, this.region, this.pays, this.page = 0, this.size = 20, }); @override List get props => [nom, type, statut, ville, region, pays, page, size]; } /// Événement pour charger une organisation spécifique class LoadOrganizationById extends OrganizationsEvent { final String id; const LoadOrganizationById(this.id); @override List get props => [id]; } /// Événement pour créer une nouvelle organisation class CreateOrganization extends OrganizationsEvent { final OrganizationModel organization; const CreateOrganization(this.organization); @override List get props => [organization]; } /// Événement pour mettre à jour une organisation class UpdateOrganization extends OrganizationsEvent { final String id; final OrganizationModel organization; const UpdateOrganization(this.id, this.organization); @override List get props => [id, organization]; } /// Événement pour supprimer une organisation class DeleteOrganization extends OrganizationsEvent { final String id; const DeleteOrganization(this.id); @override List get props => [id]; } /// Événement pour activer une organisation class ActivateOrganization extends OrganizationsEvent { final String id; const ActivateOrganization(this.id); @override List get props => [id]; } /// Événement pour filtrer les organisations par statut class FilterOrganizationsByStatus extends OrganizationsEvent { final StatutOrganization? statut; const FilterOrganizationsByStatus(this.statut); @override List get props => [statut]; } /// Événement pour filtrer les organisations par type class FilterOrganizationsByType extends OrganizationsEvent { final TypeOrganization? type; const FilterOrganizationsByType(this.type); @override List get props => [type]; } /// Événement pour trier les organisations class SortOrganizations extends OrganizationsEvent { final OrganizationSortType sortType; final bool ascending; const SortOrganizations(this.sortType, {this.ascending = true}); @override List get props => [sortType, ascending]; } /// Événement pour charger les statistiques des organisations class LoadOrganizationsStats extends OrganizationsEvent { const LoadOrganizationsStats(); } /// Événement pour effacer les filtres class ClearOrganizationsFilters extends OrganizationsEvent { const ClearOrganizationsFilters(); } /// Événement pour rafraîchir les données class RefreshOrganizations extends OrganizationsEvent { const RefreshOrganizations(); } /// Événement pour réinitialiser l'état class ResetOrganizationsState extends OrganizationsEvent { const ResetOrganizationsState(); }