/// Use case: Exporter la liste des membres library export_members; import 'package:injectable/injectable.dart'; import '../../../../shared/models/membre_search_criteria.dart'; import '../repositories/membre_repository.dart'; /// Use case pour exporter la liste des membres au format CSV ou PDF /// Réservé aux utilisateurs avec le rôle ADMIN_ORGANISATION @injectable class ExportMembers { final IMembreRepository _repository; ExportMembers(this._repository); /// Exécute le use case /// /// [criteria] - Critères de filtre pour l'export (optionnel) /// [format] - Format d'export ('csv' ou 'pdf') /// /// Retourne les données exportées (liste complète des membres selon critères) /// Note: Backend endpoint GET /api/membres/export?format=csv|excel|pdf disponible /// Le use case actuel récupère toutes les données, l'export final se fait côté UI Future>> call({ MembreSearchCriteria? criteria, String format = 'csv', }) async { // Récupérer tous les membres (pagination large) final result = await _repository.searchMembres( criteria: criteria ?? const MembreSearchCriteria(), page: 0, size: 10000, // Grande pagination pour export complet ); // Convertir en liste de maps pour l'export return result.membres.map((membre) => { 'id': membre.id, 'nom': membre.nom, 'prenom': membre.prenom, 'email': membre.email, 'telephone': membre.telephone, 'adresse': membre.adresse, 'dateNaissance': membre.dateNaissance?.toIso8601String(), 'dateAdhesion': membre.dateAdhesion?.toIso8601String(), 'statut': membre.statut, 'actif': membre.actif, }).toList(); } }