import 'package:cloud_firestore/cloud_firestore.dart'; import '../models/challenge.dart'; class ChallengeService { static final _db = FirebaseFirestore.instance; static final _dailyChallenges = _db.collection("DailyChallenges"); static final _weeklyChallenges = _db.collection("WeeklyChallenges"); static Future getDailyChallenge() async { final challenges = await _dailyChallenges.orderBy("date", descending: true).limit(1).get(); final challenge = challenges.docs.first.data(); challenge["list_exercises"] = await _getExercisesFromChallenge(challenge); return Challenge.fromMap(challenge); } static Future getWeeklyChallenge() async { final challenges = await _weeklyChallenges.orderBy("date", descending: true).limit(1).get(); final challenge = challenges.docs.first.data(); challenge["list_exercises"] = await _getExercisesFromChallenge(challenge); return Challenge.fromMap(challenge); } static Future>> _getExercisesFromChallenge(Map challenge) async { return await Future.wait( List>>.from(challenge["list_exercises"]).map((exerciseRef) async { final exercise = await exerciseRef.get(); return {"id": exercise.id,...exercise.data()!}; })); } }