Auth: - profile_repository.dart: /api/auth/change-password → /api/membres/auth/change-password Multi-org (Phase 3): - OrgSelectorPage, OrgSwitcherBloc, OrgSwitcherEntry - org_context_service.dart: headers X-Active-Organisation-Id + X-Active-Role Navigation: - MorePage: navigation conditionnelle par typeOrganisation - Suppression adaptive_navigation (remplacé par main_navigation_layout) Auth AppAuth: - keycloak_webview_auth_service: fixes AppAuth Android - AuthBloc: gestion REAUTH_REQUIS + premierLoginComplet Onboarding: - Nouveaux états: payment_method_page, onboarding_shared_widgets - SouscriptionStatusModel mis à jour StatutValidationSouscription Android: - build.gradle: ProGuard/R8, network_security_config - Gradle wrapper mis à jour
233 lines
5.1 KiB
Dart
233 lines
5.1 KiB
Dart
/// É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<Object?> 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<Object?> 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<Object?> get props => [id];
|
|
}
|
|
|
|
/// Événement pour créer un nouveau membre
|
|
class CreateMembre extends MembresEvent {
|
|
final MembreCompletModel membre;
|
|
|
|
const CreateMembre(this.membre);
|
|
|
|
@override
|
|
List<Object?> 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<Object?> get props => [id, membre];
|
|
}
|
|
|
|
/// Événement pour supprimer un membre
|
|
class DeleteMembre extends MembresEvent {
|
|
final String id;
|
|
|
|
const DeleteMembre(this.id);
|
|
|
|
@override
|
|
List<Object?> get props => [id];
|
|
}
|
|
|
|
/// Événement pour activer un membre
|
|
class ActivateMembre extends MembresEvent {
|
|
final String id;
|
|
|
|
const ActivateMembre(this.id);
|
|
|
|
@override
|
|
List<Object?> get props => [id];
|
|
}
|
|
|
|
/// Événement pour désactiver un membre
|
|
class DeactivateMembre extends MembresEvent {
|
|
final String id;
|
|
|
|
const DeactivateMembre(this.id);
|
|
|
|
@override
|
|
List<Object?> 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<Object?> 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<Object?> 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<Object?> 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<Object?> 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<Object?> 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<Object?> 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<Object?> 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<Object?> 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<Object?> get props => [membreId, organisationId, motif];
|
|
}
|
|
|