Initial commit: unionflow-mobile-apps
Application Flutter complète (sans build artifacts). Signed-off-by: lions dev Team
This commit is contained in:
49
lib/features/members/domain/usecases/export_members.dart
Normal file
49
lib/features/members/domain/usecases/export_members.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
/// 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)
|
||||
/// TODO: Ajouter endpoint backend GET /api/membres/export?format=csv|pdf
|
||||
/// Le use case actuel récupère toutes les données, l'export final se fait côté UI
|
||||
Future<List<Map<String, dynamic>>> 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user