Warnung bei schlechtem Training
parent
e5c3cd9206
commit
b7ec276347
|
|
@ -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');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue