/// Interface du repository des événements (Clean Architecture) library evenement_repository_interface; import '../../data/repositories/evenement_repository_impl.dart' show EvenementSearchResult; import '../../data/models/evenement_model.dart'; /// Interface définissant le contrat du repository des événements /// Implémentée par EvenementRepositoryImpl dans la couche data abstract class IEvenementRepository { /// Récupère la liste des événements avec pagination Future getEvenements({ int page = 0, int size = 20, String? recherche, }); /// Récupère un événement par son ID Future getEvenementById(String id); /// Crée un nouvel événement Future createEvenement(EvenementModel evenement); /// Met à jour un événement Future updateEvenement(String id, EvenementModel evenement); /// Supprime un événement Future deleteEvenement(String id); /// Récupère les événements à venir Future getEvenementsAVenir({int page = 0, int size = 20}); /// Récupère les événements en cours Future getEvenementsEnCours({int page = 0, int size = 20}); /// Récupère les événements passés Future getEvenementsPasses({int page = 0, int size = 20}); /// S'inscrire à un événement Future inscrireEvenement(String evenementId); /// Se désinscrire d'un événement Future desinscrireEvenement(String evenementId); /// Indique si l'utilisateur connecté est inscrit à l'événement Future getInscriptionStatus(String evenementId); /// Récupère les participants d'un événement Future>> getParticipants(String evenementId); /// Récupère les statistiques des événements Future> getEvenementsStats(); /// Soumet un feedback pour un événement Future submitFeedback({ required String evenementId, required int note, String? commentaire, }); /// Récupère les feedbacks d'un événement Future> getFeedbacks(String evenementId); }