Warnung bei schlechtem Training

main
joschy2002 2025-06-03 20:40:12 +02:00
parent e5c3cd9206
commit b7ec276347
1 changed files with 95 additions and 1 deletions

View File

@ -273,6 +273,100 @@ class _CalendarTabState extends State<CalendarTab> {
// Wenn eine Übung ausgewählt wurde // Wenn eine Übung ausgewählt wurde
if (result != null && result is Map<String, dynamic>) { if (result != null && result is Map<String, dynamic>) {
try { 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<String, dynamic>;
print('Übungsdaten: $exerciseData');
// Versuche die Bewertungen aus verschiedenen möglichen Feldern zu lesen
List<Map<String, dynamic>> ratings = [];
if (exerciseData.containsKey('ratings')) {
ratings = List<Map<String, dynamic>>.from(exerciseData['ratings'] ?? []);
print('Bewertungen aus Feld "ratings" gefunden: $ratings');
} else if (exerciseData.containsKey('rating')) {
ratings = List<Map<String, dynamic>>.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<bool>(
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 final userDoc = await FirebaseFirestore.instance
.collection('User') .collection('User')
.doc(_currentUserId) .doc(_currentUserId)
@ -285,7 +379,7 @@ class _CalendarTabState extends State<CalendarTab> {
final dateString = event['date'] as String; final dateString = event['date'] as String;
final trainingId = event['id'] as String; final trainingId = event['id'] as String;
print('Füge Übung hinzu:'); print('Füge Übung zum Training hinzu:');
print('dateString: $dateString'); print('dateString: $dateString');
print('trainingId: $trainingId'); print('trainingId: $trainingId');
print('Vorher - trainings: $trainings'); print('Vorher - trainings: $trainings');