diff --git a/trainerbox/lib/screens/calendar_tab.dart b/trainerbox/lib/screens/calendar_tab.dart index 1db6f9b..55229ba 100644 --- a/trainerbox/lib/screens/calendar_tab.dart +++ b/trainerbox/lib/screens/calendar_tab.dart @@ -273,6 +273,100 @@ class _CalendarTabState extends State { // Wenn eine Übung ausgewählt wurde if (result != null && result is Map) { try { + print('Übung ausgewählt:'); + print('ID: ${result['id']}'); + print('Titel: ${result['title']}'); + print('Vollständige Übungsdaten: $result'); + + bool shouldAddExercise = true; + + // Prüfe die Bewertungen der Übung in der Training-Collection + print('Suche Übung in der Datenbank...'); + final exerciseDoc = await FirebaseFirestore.instance + .collection('Training') + .doc(result['id']) + .get(); + + print('Übungsdokument gefunden: ${exerciseDoc.exists}'); + print('Collection-Pfad: Training/${result['id']}'); + + if (exerciseDoc.exists) { + final exerciseData = exerciseDoc.data() as Map; + print('Übungsdaten: $exerciseData'); + + // Versuche die Bewertungen aus verschiedenen möglichen Feldern zu lesen + List> ratings = []; + if (exerciseData.containsKey('ratings')) { + ratings = List>.from(exerciseData['ratings'] ?? []); + print('Bewertungen aus Feld "ratings" gefunden: $ratings'); + } else if (exerciseData.containsKey('rating')) { + ratings = List>.from(exerciseData['rating'] ?? []); + print('Bewertungen aus Feld "rating" gefunden: $ratings'); + } + + print('Gefundene Bewertungen: $ratings'); + + if (ratings.isNotEmpty) { + // Berechne den Durchschnitt der Bewertungen + double totalRating = 0; + for (var rating in ratings) { + if (rating.containsKey('rating')) { + totalRating += (rating['rating'] as num).toDouble(); + } + } + final averageRating = totalRating / ratings.length; + + print('Durchschnittliche Bewertung: $averageRating'); + + // Wenn die durchschnittliche Bewertung unter 3 liegt, zeige eine Warnung + if (averageRating < 3) { + print('Zeige Warnung für schlechte Bewertung'); + if (mounted) { + shouldAddExercise = await showDialog( + context: context, + barrierDismissible: false, + builder: (context) => AlertDialog( + title: const Text('Hinweis zur Übungsbewertung'), + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Die Übung "${result['title']}" wurde von anderen Trainern mit ${averageRating.toStringAsFixed(1)} von 5 Sternen bewertet.'), + const SizedBox(height: 16), + const Text('Möchten Sie diese Übung trotzdem zu Ihrem Training hinzufügen?'), + ], + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, false), + child: const Text('Abbrechen'), + ), + TextButton( + onPressed: () => Navigator.pop(context, true), + child: const Text('Trotzdem hinzufügen'), + ), + ], + ), + ) ?? false; + + print('Benutzer hat entschieden: ${shouldAddExercise ? "Hinzufügen" : "Abbrechen"}'); + } + } else { + print('Bewertung ist gut genug, keine Warnung nötig'); + } + } else { + print('Keine Bewertungen vorhanden'); + } + } else { + print('Warnung: Übungsdokument nicht gefunden'); + } + + if (!shouldAddExercise) { + print('Übung wird nicht hinzugefügt (Benutzer hat abgebrochen)'); + return; + } + + // Füge die Übung zum Training hinzu final userDoc = await FirebaseFirestore.instance .collection('User') .doc(_currentUserId) @@ -285,7 +379,7 @@ class _CalendarTabState extends State { final dateString = event['date'] as String; final trainingId = event['id'] as String; - print('Füge Übung hinzu:'); + print('Füge Übung zum Training hinzu:'); print('dateString: $dateString'); print('trainingId: $trainingId'); print('Vorher - trainings: $trainings');