/// Use case: Récupérer les statistiques des membres
library get_member_stats;

import 'package:injectable/injectable.dart';
import '../repositories/membre_repository.dart';

/// Use case pour récupérer les statistiques globales des membres
/// Réservé aux utilisateurs avec le rôle ADMIN_ORGANISATION
@injectable
class GetMemberStats {
  final IMembreRepository _repository;

  GetMemberStats(this._repository);

  /// Exécute le use case
  ///
  /// Retourne un Map contenant les statistiques:
  /// - totalMembres: Nombre total de membres
  /// - membresActifs: Nombre de membres actifs
  /// - membresInactifs: Nombre de membres inactifs
  /// - nouveauxMembres30j: Nouveaux membres sur les 30 derniers jours
  /// - membresBureau: Nombre de membres du bureau
  /// - tauxActivite: Taux d'activité en pourcentage
  ///
  /// Lève une exception en cas d'erreur d'accès
  Future<Map<String, dynamic>> call() async {
    return _repository.getMembresStats();
  }
}
