/// Événements pour le BLoC des membres library membres_event; import 'package:equatable/equatable.dart'; import '../data/models/membre_complete_model.dart'; import '../../../shared/models/membre_search_criteria.dart'; /// Classe de base pour tous les événements des membres abstract class MembresEvent extends Equatable { const MembresEvent(); @override List get props => []; } /// Événement pour charger la liste des membres class LoadMembres extends MembresEvent { final int page; final int size; final String? recherche; final bool refresh; final String? organisationId; const LoadMembres({ this.page = 0, this.size = 20, this.recherche, this.refresh = false, this.organisationId, }); @override List get props => [page, size, recherche, refresh, organisationId]; } /// Événement pour charger un membre par ID class LoadMembreById extends MembresEvent { final String id; const LoadMembreById(this.id); @override List get props => [id]; } /// Événement pour créer un nouveau membre class CreateMembre extends MembresEvent { final MembreCompletModel membre; const CreateMembre(this.membre); @override List get props => [membre]; } /// Événement pour mettre à jour un membre class UpdateMembre extends MembresEvent { final String id; final MembreCompletModel membre; const UpdateMembre(this.id, this.membre); @override List get props => [id, membre]; } /// Événement pour supprimer un membre class DeleteMembre extends MembresEvent { final String id; const DeleteMembre(this.id); @override List get props => [id]; } /// Événement pour activer un membre class ActivateMembre extends MembresEvent { final String id; const ActivateMembre(this.id); @override List get props => [id]; } /// Événement pour désactiver un membre class DeactivateMembre extends MembresEvent { final String id; const DeactivateMembre(this.id); @override List get props => [id]; } /// Événement pour recherche avancée class SearchMembres extends MembresEvent { final MembreSearchCriteria criteria; final int page; final int size; const SearchMembres({ required this.criteria, this.page = 0, this.size = 20, }); @override List get props => [criteria, page, size]; } /// Événement pour charger les membres actifs class LoadActiveMembres extends MembresEvent { final int page; final int size; const LoadActiveMembres({ this.page = 0, this.size = 20, }); @override List get props => [page, size]; } /// Événement pour charger les membres du bureau class LoadBureauMembres extends MembresEvent { final int page; final int size; const LoadBureauMembres({ this.page = 0, this.size = 20, }); @override List get props => [page, size]; } /// Événement pour charger les statistiques class LoadMembresStats extends MembresEvent { const LoadMembresStats(); } /// Événement pour réinitialiser le mot de passe d'un membre existant class ResetMotDePasse extends MembresEvent { final String id; const ResetMotDePasse(this.id); @override List get props => [id]; } /// Événement pour affecter un membre à une organisation (superadmin) class AffecterOrganisation extends MembresEvent { final String membreId; final String organisationId; const AffecterOrganisation(this.membreId, this.organisationId); @override List get props => [membreId, organisationId]; } // ── Cycle de vie des adhésions ──────────────────────────────────────────── /// Inviter un membre dans une organisation (admin) class InviterMembre extends MembresEvent { final String membreId; final String organisationId; final String? roleOrg; const InviterMembre({ required this.membreId, required this.organisationId, this.roleOrg, }); @override List get props => [membreId, organisationId, roleOrg]; } /// Activer l'adhésion d'un membre dans l'organisation courante class ActiverAdhesion extends MembresEvent { final String membreId; final String organisationId; final String? motif; const ActiverAdhesion({ required this.membreId, required this.organisationId, this.motif, }); @override List get props => [membreId, organisationId, motif]; } /// Suspendre l'adhésion d'un membre class SuspendrAdhesion extends MembresEvent { final String membreId; final String organisationId; final String? motif; const SuspendrAdhesion({ required this.membreId, required this.organisationId, this.motif, }); @override List get props => [membreId, organisationId, motif]; } /// Radier un membre d'une organisation class RadierAdhesion extends MembresEvent { final String membreId; final String organisationId; final String? motif; const RadierAdhesion({ required this.membreId, required this.organisationId, this.motif, }); @override List get props => [membreId, organisationId, motif]; }