Connecte le frontend mobile aux nouveaux endpoints backend événements. ## Repository Interface (evenement_repository.dart) - ✅ Ajout submitFeedback(evenementId, note, commentaire) - ✅ Ajout getFeedbacks(evenementId) → retourne feedbacks + stats ## Repository Impl (evenement_repository_impl.dart) - ✅ Correction inscrireEvenement : /inscrire → /inscriptions (POST) - ✅ Correction desinscrireEvenement : /desinscrire → /inscriptions (DELETE) - ✅ Implémentation submitFeedback : POST /api/evenements/{id}/feedback - ✅ Implémentation getFeedbacks : GET /api/evenements/{id}/feedbacks - Gestion erreurs 400 (déjà soumis, pas participant, etc.) ## Use Case (submit_event_feedback.dart) - ✅ Remplacement UnimplementedError par appel repository - ✅ Validation note 1-5 - ✅ Transmission note + commentaire optionnel ## Fonctionnalités débloquées - Inscription/désinscription événements ✅ (URLs corrigées) - Soumission feedback post-événement ✅ - Consultation feedbacks + note moyenne ✅ Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
45 lines
1.2 KiB
Dart
45 lines
1.2 KiB
Dart
/// Use case: Soumettre un feedback sur un événement
|
|
library submit_event_feedback;
|
|
|
|
import 'package:injectable/injectable.dart';
|
|
import '../repositories/evenement_repository.dart';
|
|
|
|
/// Use case pour soumettre un feedback après un événement
|
|
/// Note: Cette fonctionnalité nécessite un endpoint backend dédié
|
|
@injectable
|
|
class SubmitEventFeedback {
|
|
final IEvenementRepository _repository;
|
|
|
|
SubmitEventFeedback(this._repository);
|
|
|
|
/// Exécute le use case
|
|
///
|
|
/// [evenementId] - UUID de l'événement
|
|
/// [note] - Note de 1 à 5
|
|
/// [commentaire] - Commentaire (optionnel)
|
|
///
|
|
/// Soumet un feedback pour l'événement
|
|
/// Réservé aux participants de l'événement
|
|
///
|
|
/// Lève une exception si:
|
|
/// - L'événement n'existe pas
|
|
/// - Le membre n'a pas participé
|
|
/// - L'événement n'est pas terminé
|
|
/// - Un feedback a déjà été soumis
|
|
Future<void> call({
|
|
required String evenementId,
|
|
required int note,
|
|
String? commentaire,
|
|
}) async {
|
|
if (note < 1 || note > 5) {
|
|
throw ArgumentError('La note doit être entre 1 et 5');
|
|
}
|
|
|
|
await _repository.submitFeedback(
|
|
evenementId: evenementId,
|
|
note: note,
|
|
commentaire: commentaire,
|
|
);
|
|
}
|
|
}
|