Files
unionflow-mobile-apps/lib/features/members/bloc/membres_event.dart
dahoud 70cbd1c873 fix(mobile): URL changement mdp corrigée + v3.0 — multi-org, AppAuth, sécurité prod
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
2026-04-07 20:56:03 +00:00

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];
}