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
72 lines
2.7 KiB
Dart
72 lines
2.7 KiB
Dart
/// Interface du repository des membres (Clean Architecture)
|
|
library membre_repository_interface;
|
|
|
|
import '../../data/models/membre_complete_model.dart';
|
|
import '../../../../shared/models/membre_search_result.dart';
|
|
import '../../../../shared/models/membre_search_criteria.dart';
|
|
|
|
/// Interface définissant le contrat du repository des membres
|
|
/// Implémentée par MembreRepositoryImpl dans la couche data
|
|
abstract class IMembreRepository {
|
|
/// Récupère la liste des membres avec pagination
|
|
Future<MembreSearchResult> getMembres({
|
|
int page = 0,
|
|
int size = 20,
|
|
String? recherche,
|
|
});
|
|
|
|
/// Récupère un membre par son ID
|
|
Future<MembreCompletModel?> getMembreById(String id);
|
|
|
|
/// Crée un nouveau membre
|
|
Future<MembreCompletModel> createMembre(MembreCompletModel membre);
|
|
|
|
/// Met à jour un membre
|
|
Future<MembreCompletModel> updateMembre(String id, MembreCompletModel membre);
|
|
|
|
/// Supprime un membre
|
|
Future<void> deleteMembre(String id);
|
|
|
|
/// Active un membre
|
|
Future<MembreCompletModel> activateMembre(String id);
|
|
|
|
/// Désactive un membre
|
|
Future<MembreCompletModel> deactivateMembre(String id);
|
|
|
|
/// Recherche avancée de membres
|
|
Future<MembreSearchResult> searchMembres({
|
|
required MembreSearchCriteria criteria,
|
|
int page = 0,
|
|
int size = 20,
|
|
});
|
|
|
|
/// Récupère les membres actifs
|
|
Future<MembreSearchResult> getActiveMembers({int page = 0, int size = 20});
|
|
|
|
/// Récupère les membres du bureau
|
|
Future<MembreSearchResult> getBureauMembers({int page = 0, int size = 20});
|
|
|
|
/// Récupère les statistiques des membres
|
|
Future<Map<String, dynamic>> getMembresStats();
|
|
|
|
/// Réinitialise le mot de passe d'un membre — retourne le membre avec motDePasseTemporaire
|
|
Future<MembreCompletModel> resetMotDePasse(String id);
|
|
|
|
/// Affecte un membre à une organisation (superadmin uniquement)
|
|
Future<MembreCompletModel> affecterOrganisation(String membreId, String organisationId);
|
|
|
|
// ── Cycle de vie des adhésions ───────────────────────────────────────────
|
|
|
|
/// Invite un membre dans une organisation (statut INVITE, token 7j)
|
|
Future<Map<String, dynamic>> inviterMembre(String membreId, String organisationId, {String? roleOrg});
|
|
|
|
/// Active l'adhésion d'un membre (EN_ATTENTE/INVITE/SUSPENDU → ACTIF)
|
|
Future<Map<String, dynamic>> activerAdhesion(String membreId, String organisationId, {String? motif});
|
|
|
|
/// Suspend l'adhésion d'un membre (ACTIF → SUSPENDU)
|
|
Future<Map<String, dynamic>> suspendrAdhesion(String membreId, String organisationId, {String? motif});
|
|
|
|
/// Radie un membre d'une organisation
|
|
Future<Map<String, dynamic>> radierAdhesion(String membreId, String organisationId, {String? motif});
|
|
}
|