52 lines
1.6 KiB
Dart
52 lines
1.6 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();
|
|
}
|