// // 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 get absences => _absences; // TodoNotesProvider({ // List initialAbsences = const [], // required BuildContext context, // }) { // _absences = List.castFrom(initialAbsences); // _context = context; // if (_absences.isEmpty) restore(); // } // Future restore() async { // String? userId = Provider.of(_context, listen: false).id; // // Load absences from the database // if (userId != null) { // var dbAbsences = // await Provider.of(_context, listen: false) // .userQuery // .getAbsences(userId: userId); // _absences = dbAbsences; // await convertBySettings(); // } // } // // for renamed subjects // Future convertBySettings() async { // final _database = Provider.of(_context, listen: false); // Map renamedSubjects = // (await _database.query.getSettings(_database)).renamedSubjectsEnabled // ? await _database.userQuery.renamedSubjects( // userId: // // ignore: use_build_context_synchronously // Provider.of(_context, listen: false).user!.id) // : {}; // Map renamedTeachers = // (await _database.query.getSettings(_database)).renamedTeachersEnabled // ? await _database.userQuery.renamedTeachers( // userId: // // ignore: use_build_context_synchronously // Provider.of(_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 fetch() async { // User? user = Provider.of(_context, listen: false).user; // if (user == null) throw "Cannot fetch Absences for User null"; // String iss = user.instituteCode; // List? absencesJson = await Provider.of(_context, listen: false) // .getAPI(KretaAPI.absences(iss)); // if (absencesJson == null) throw "Cannot fetch Absences for User ${user.id}"; // List absences = // absencesJson.map((e) => Absence.fromJson(e)).toList(); // if (absences.isNotEmpty || _absences.isNotEmpty) await store(absences); // } // // Stores Absences in the database // Future store(List absences) async { // User? user = Provider.of(_context, listen: false).user; // if (user == null) throw "Cannot store Absences for User null"; // String userId = user.id; // await Provider.of(_context, listen: false) // .userStore // .storeAbsences(absences, userId: userId); // _absences = absences; // await convertBySettings(); // } // }