diff --git a/filcnaplo/lib/database/init.dart b/filcnaplo/lib/database/init.dart index d00885f..1c0b14b 100644 --- a/filcnaplo/lib/database/init.dart +++ b/filcnaplo/lib/database/init.dart @@ -58,6 +58,8 @@ const userDataDB = DatabaseStruct("user_data", { "goal_averages": String, "goal_befores": String, "goal_pin_dates": String, + // todo and notes + "todo_items": String, "self_notes": String, }); Future createTable(Database db, DatabaseStruct struct) => @@ -115,6 +117,8 @@ Future initDB(DatabaseProvider database) async { "goal_averages": "{}", "goal_befores": "{}", "goal_pin_dates": "{}", + // todo and notes + "todo_items": "{}", "self_notes": "[]" }); } catch (error) { print("ERROR: migrateDB: $error"); diff --git a/filcnaplo/lib/database/query.dart b/filcnaplo/lib/database/query.dart index 1905d57..3ebd953 100644 --- a/filcnaplo/lib/database/query.dart +++ b/filcnaplo/lib/database/query.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'package:filcnaplo/api/providers/database_provider.dart'; +import 'package:filcnaplo/models/self_note.dart'; import 'package:filcnaplo/models/subject_lesson_count.dart'; import 'package:filcnaplo/models/user.dart'; import 'package:filcnaplo_kreta_api/models/week.dart'; @@ -281,4 +282,27 @@ class UserDatabaseQuery { return (jsonDecode(goalPinDatesJson) as Map) .map((key, value) => MapEntry(key.toString(), value.toString())); } + + // get todo items and notes + Future> toDoItems({required String userId}) async { + List userData = + await db.query("user_data", where: "id = ?", whereArgs: [userId]); + if (userData.isEmpty) return {}; + String? toDoItemsJson = userData.elementAt(0)["todo_items"] as String?; + if (toDoItemsJson == null) return {}; + return (jsonDecode(toDoItemsJson) as Map).map((key, value) => + MapEntry(key.toString(), value.toString().toLowerCase() == 'true')); + } + + Future> getSelfNotes({required String userId}) async { + List userData = + await db.query("user_data", where: "id = ?", whereArgs: [userId]); + if (userData.isEmpty) return []; + String? selfNotesJson = userData.elementAt(0)["self_notes"] as String?; + if (selfNotesJson == null) return []; + List selfNotes = (jsonDecode(selfNotesJson) as List) + .map((e) => SelfNote.fromJson(e)) + .toList(); + return selfNotes; + } } diff --git a/filcnaplo/lib/database/store.dart b/filcnaplo/lib/database/store.dart index e31adf9..7d23579 100644 --- a/filcnaplo/lib/database/store.dart +++ b/filcnaplo/lib/database/store.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'package:filcnaplo/models/self_note.dart'; import 'package:filcnaplo/models/subject_lesson_count.dart'; import 'package:filcnaplo_kreta_api/models/week.dart'; // ignore: depend_on_referenced_packages @@ -177,4 +178,19 @@ class UserDatabaseStore { await db.update("user_data", {"goal_pin_dates": goalPinDatesJson}, where: "id = ?", whereArgs: [userId]); } + + // todo and notes + Future storeToDoItem(Map items, + {required String userId}) async { + String toDoItemsJson = jsonEncode(items); + await db.update("user_data", {"todo_items": toDoItemsJson}, + where: "id = ?", whereArgs: [userId]); + } + + Future storeSelfNotes(List absences, + {required String userId}) async { + String selfNotesJson = jsonEncode(absences.map((e) => e.json).toList()); + await db.update("user_data", {"self_notes": selfNotesJson}, + where: "id = ?", whereArgs: [userId]); + } }