2023-09-02 14:48:05 +02:00

46 lines
1.3 KiB
Dart

import 'package:filcnaplo/api/providers/database_provider.dart';
import 'package:filcnaplo/api/providers/user_provider.dart';
import 'package:filcnaplo_kreta_api/models/subject.dart';
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
import 'package:flutter/widgets.dart';
class GoalProvider extends ChangeNotifier {
final DatabaseProvider _db;
final UserProvider _user;
final GradeProvider _gradeProvider;
late bool _done = false;
late Subject _doneSubject;
bool get hasDoneGoals => _done;
Subject get doneSubject => _doneSubject;
GoalProvider({
required DatabaseProvider database,
required UserProvider user,
required GradeProvider gradeProvider,
}) : _db = database,
_user = user,
_gradeProvider = gradeProvider;
Future<void> fetchDone() async {
var goalAvgs = await _db.userQuery.subjectGoalAverages(userId: _user.id!);
var beforeAvgs = await _db.userQuery.subjectGoalAverages(userId: _user.id!);
List<Subject> subjects = _gradeProvider.grades
.map((e) => e.subject)
.toSet()
.toList()
..sort((a, b) => a.name.compareTo(b.name));
goalAvgs.forEach((k, v) {
if (beforeAvgs[k] == v) {
_done = true;
_doneSubject = subjects.where((e) => e.id == k).toList()[0];
notifyListeners();
}
});
}
}