| 1234567891011121314151617181920212223242526272829303132333435 |
- import 'package:cloud_firestore/cloud_firestore.dart';
- import 'package:firebase_auth/firebase_auth.dart';
- import 'package:physigo/exercises/exercises_validation/models/exercise.dart';
- class ExercisesService {
- static final _db = FirebaseFirestore.instance;
- static final _exercises = _db.collection("Exercises");
- static final _exercisesScores = _db.collection("ExercisesScores");
- static Future<List<Exercise>> getExercises() async {
- final exercisesSnapshot = await _exercises.get();
- if (exercisesSnapshot.docs.isEmpty) {
- return [];
- }
- final exercises = exercisesSnapshot.docs.map((e) => Exercise.fromMap(e.id, e.data())).toList();
- return exercises;
- }
- static Future<void> addScoreToExercise(Exercise exercise, int score) async {
- final userId = FirebaseAuth.instance.currentUser!.uid;
- final exerciseScoreSnapshot =
- await _exercisesScores.where("user", isEqualTo: userId).where("exercise", isEqualTo: exercise.id).get();
- if (exerciseScoreSnapshot.docs.isEmpty) {
- await _exercisesScores.add({"score": score, "user": userId, "exercise": exercise.id});
- } else {
- final exerciseScore = exerciseScoreSnapshot.docs.first;
- _exercisesScores.doc(exerciseScore.id).update({"score": exerciseScore.get("score") + score});
- }
- final user = await _db.collection("profileInfo").doc(FirebaseAuth.instance.currentUser?.uid).get();
- _db
- .collection("profileInfo")
- .doc(FirebaseAuth.instance.currentUser?.uid)
- .update({"total_points": user.get("total_points") + score});
- }
- }
|