/// Use case: Récupérer la liste des participants d'un événement
library get_event_participants;

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

/// Use case pour récupérer les participants d'un événement
/// Réservé à l'organisateur de l'événement ou ADMIN_ORGANISATION
@injectable
class GetEventParticipants {
  final IEvenementRepository _repository;

  GetEventParticipants(this._repository);

  /// Exécute le use case
  ///
  /// [evenementId] - UUID de l'événement
  ///
  /// Retourne la liste des participants avec leurs informations:
  /// - id: UUID du membre
  /// - nom: Nom complet
  /// - email: Email
  /// - dateInscription: Date d'inscription
  /// - statut: Statut de participation (CONFIRME, EN_ATTENTE, etc.)
  ///
  /// Lève une exception si l'événement n'existe pas ou accès refusé
  Future<List<Map<String, dynamic>>> call(String evenementId) async {
    return _repository.getParticipants(evenementId);
  }
}
