student-legacy/refilc/lib/providers/todo_notes_provider.dart

99 lines
3.7 KiB
Dart

// // ignore_for_file: no_leading_underscores_for_local_identifiers
// import 'package:refilc/api/providers/user_provider.dart';
// import 'package:refilc/api/providers/database_provider.dart';
// import 'package:refilc/models/user.dart';
// import 'package:refilc_kreta_api/client/api.dart';
// import 'package:refilc_kreta_api/client/client.dart';
// import 'package:refilc_kreta_api/models/absence.dart';
// import 'package:flutter/material.dart';
// import 'package:provider/provider.dart';
// class TodoNotesProvider with ChangeNotifier {
// late Map<> _absences;
// late BuildContext _context;
// List<Absence> get absences => _absences;
// TodoNotesProvider({
// List<Absence> initialAbsences = const [],
// required BuildContext context,
// }) {
// _absences = List.castFrom(initialAbsences);
// _context = context;
// if (_absences.isEmpty) restore();
// }
// Future<void> restore() async {
// String? userId = Provider.of<UserProvider>(_context, listen: false).id;
// // Load absences from the database
// if (userId != null) {
// var dbAbsences =
// await Provider.of<DatabaseProvider>(_context, listen: false)
// .userQuery
// .getAbsences(userId: userId);
// _absences = dbAbsences;
// await convertBySettings();
// }
// }
// // for renamed subjects
// Future<void> convertBySettings() async {
// final _database = Provider.of<DatabaseProvider>(_context, listen: false);
// Map<String, String> renamedSubjects =
// (await _database.query.getSettings(_database)).renamedSubjectsEnabled
// ? await _database.userQuery.renamedSubjects(
// userId:
// // ignore: use_build_context_synchronously
// Provider.of<UserProvider>(_context, listen: false).user!.id)
// : {};
// Map<String, String> renamedTeachers =
// (await _database.query.getSettings(_database)).renamedTeachersEnabled
// ? await _database.userQuery.renamedTeachers(
// userId:
// // ignore: use_build_context_synchronously
// Provider.of<UserProvider>(_context, listen: false).user!.id)
// : {};
// for (Absence absence in _absences) {
// absence.subject.renamedTo = renamedSubjects.isNotEmpty
// ? renamedSubjects[absence.subject.id]
// : null;
// absence.teacher.renamedTo = renamedTeachers.isNotEmpty
// ? renamedTeachers[absence.teacher.id]
// : null;
// }
// notifyListeners();
// }
// // Fetches Absences from the Kreta API then stores them in the database
// Future<void> fetch() async {
// User? user = Provider.of<UserProvider>(_context, listen: false).user;
// if (user == null) throw "Cannot fetch Absences for User null";
// String iss = user.instituteCode;
// List? absencesJson = await Provider.of<KretaClient>(_context, listen: false)
// .getAPI(KretaAPI.absences(iss));
// if (absencesJson == null) throw "Cannot fetch Absences for User ${user.id}";
// List<Absence> absences =
// absencesJson.map((e) => Absence.fromJson(e)).toList();
// if (absences.isNotEmpty || _absences.isNotEmpty) await store(absences);
// }
// // Stores Absences in the database
// Future<void> store(List<Absence> absences) async {
// User? user = Provider.of<UserProvider>(_context, listen: false).user;
// if (user == null) throw "Cannot store Absences for User null";
// String userId = user.id;
// await Provider.of<DatabaseProvider>(_context, listen: false)
// .userStore
// .storeAbsences(absences, userId: userId);
// _absences = absences;
// await convertBySettings();
// }
// }