added goal provider thing

This commit is contained in:
Kima
2023-09-02 15:37:49 +02:00
parent fef0857050
commit 4a43f1607c
4 changed files with 72 additions and 16 deletions

View File

@@ -7,27 +7,24 @@ 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;
late Subject? _doneSubject;
bool get hasDoneGoals => _done;
Subject get doneSubject => _doneSubject;
Subject? get doneSubject => _doneSubject;
GoalProvider({
required DatabaseProvider database,
required UserProvider user,
required GradeProvider gradeProvider,
}) : _db = database,
_user = user,
_gradeProvider = gradeProvider;
_user = user;
Future<void> fetchDone() async {
Future<void> fetchDone({required GradeProvider gradeProvider}) async {
var goalAvgs = await _db.userQuery.subjectGoalAverages(userId: _user.id!);
var beforeAvgs = await _db.userQuery.subjectGoalAverages(userId: _user.id!);
List<Subject> subjects = _gradeProvider.grades
List<Subject> subjects = gradeProvider.grades
.map((e) => e.subject)
.toSet()
.toList()
@@ -42,4 +39,30 @@ class GoalProvider extends ChangeNotifier {
}
});
}
void lock() {
_done = false;
_doneSubject = null;
}
Future<void> clearGoal(Subject subject) async {
final goalPlans = await _db.userQuery.subjectGoalPlans(userId: _user.id!);
final goalAvgs = await _db.userQuery.subjectGoalAverages(userId: _user.id!);
final goalBeforeGrades =
await _db.userQuery.subjectGoalBefores(userId: _user.id!);
final goalPinDates =
await _db.userQuery.subjectGoalPinDates(userId: _user.id!);
goalPlans.remove(subject.id);
goalAvgs.remove(subject.id);
goalBeforeGrades.remove(subject.id);
goalPinDates.remove(subject.id);
await _db.userStore.storeSubjectGoalPlans(goalPlans, userId: _user.id!);
await _db.userStore.storeSubjectGoalAverages(goalAvgs, userId: _user.id!);
await _db.userStore
.storeSubjectGoalBefores(goalBeforeGrades, userId: _user.id!);
await _db.userStore
.storeSubjectGoalPinDates(goalPinDates, userId: _user.id!);
}
}