gradeopening db

This commit is contained in:
55nknown 2022-10-26 13:10:46 +02:00
parent 47a18c1ec2
commit 38eb8c440b
5 changed files with 28 additions and 3 deletions

View File

@ -15,6 +15,7 @@ const settingsDB = DatabaseStruct("settings", {
"vibration_strength": int, "ab_weeks": int, "swap_ab_weeks": int,
"notifications": int, "notifications_bitfield": int, "notification_poll_interval": int, // notifications
"x_filc_id": String, "graph_class_avg": int, "presentation_mode": int, "bell_delay": int, "bell_delay_enabled": int,
"grade_opening_fun": int,
});
const usersDB = DatabaseStruct(
"users", {"id": String, "name": String, "username": String, "password": String, "institute_code": String, "student": String, "role": int});
@ -22,6 +23,7 @@ const userDataDB = DatabaseStruct("user_data", {
"id": String, "grades": String, "timetable": String, "exams": String, "homework": String, "messages": String, "notes": String,
"events": String, "absences": String, "group_averages": String,
// "subject_lesson_count": String, // non kreta data
"last_seen_grade": int,
});
Future<void> createTable(Database db, DatabaseStruct struct) => db.execute("CREATE TABLE IF NOT EXISTS ${struct.table} ($struct)");
@ -61,6 +63,7 @@ Future<Database> initDB() async {
"grades": "[]", "timetable": "[]", "exams": "[]", "homework": "[]", "messages": "[]", "notes": "[]", "events": "[]", "absences": "[]",
"group_averages": "[]",
// "subject_lesson_count": "{}", // non kreta data
"last_seen_grade": "0",
});
} catch (error) {
print("ERROR: migrateDB: $error");

View File

@ -132,4 +132,13 @@ class UserDatabaseQuery {
SubjectLessonCount lessonCount = SubjectLessonCount.fromMap(jsonDecode(lessonCountJson) as Map);
return lessonCount;
}
Future<DateTime> lastSeenGrade({required String userId}) async {
List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
if (userData.isEmpty) return DateTime(0);
int? lastSeenDate = userData.elementAt(0)["last_seen_grade"] as int?;
if (lastSeenDate == null) return DateTime(0);
DateTime lastSeen = DateTime.fromMillisecondsSinceEpoch(lastSeenDate);
return lastSeen;
}
}

View File

@ -91,9 +91,13 @@ class UserDatabaseStore {
await db.update("user_data", {"group_averages": groupAveragesJson}, where: "id = ?", whereArgs: [userId]);
}
Future<void> storeSubjectLessonCount(SubjectLessonCount lessonCount, {required String userId}) async {
String lessonCountJson = jsonEncode(lessonCount.toMap());
await db.update("user_data", {"subject_lesson_count": lessonCountJson}, where: "id = ?", whereArgs: [userId]);
}
Future<void> storeLastSeenGrade(DateTime date, {required String userId}) async {
int lastSeenDate = date.millisecondsSinceEpoch;
await db.update("user_data", {"last_seen_grade": lastSeenDate}, where: "id = ?", whereArgs: [userId]);
}
}

View File

@ -55,6 +55,7 @@ class SettingsProvider extends ChangeNotifier {
bool _presentationMode;
bool _bellDelayEnabled;
int _bellDelay;
bool _gradeOpeningFun;
SettingsProvider({
required String language,
@ -80,6 +81,7 @@ class SettingsProvider extends ChangeNotifier {
required bool presentationMode,
required bool bellDelayEnabled,
required int bellDelay,
required bool gradeOpeningFun,
}) : _language = language,
_startPage = startPage,
_rounding = rounding,
@ -102,7 +104,8 @@ class SettingsProvider extends ChangeNotifier {
_goodStudent = goodStudent,
_presentationMode = presentationMode,
_bellDelayEnabled = bellDelayEnabled,
_bellDelay = bellDelay;
_bellDelay = bellDelay,
_gradeOpeningFun = gradeOpeningFun;
factory SettingsProvider.fromMap(Map map) {
Map<String, Object?>? configMap;
@ -143,6 +146,7 @@ class SettingsProvider extends ChangeNotifier {
presentationMode: map["presentation_mode"] == 1,
bellDelayEnabled: map["bell_delay_enabled"] == 1,
bellDelay: map["bell_delay"],
gradeOpeningFun: map["grade_opening_fun"] == 1,
);
}
@ -174,6 +178,7 @@ class SettingsProvider extends ChangeNotifier {
"presentation_mode": _presentationMode ? 1 : 0,
"bell_delay_enabled": _bellDelayEnabled ? 1 : 0,
"bell_delay": _bellDelay,
"grade_opening_fun": _gradeOpeningFun ? 1 : 0,
};
}
@ -208,6 +213,7 @@ class SettingsProvider extends ChangeNotifier {
presentationMode: false,
bellDelayEnabled: false,
bellDelay: 0,
gradeOpeningFun: true,
);
}
@ -235,6 +241,7 @@ class SettingsProvider extends ChangeNotifier {
bool get presentationMode => _presentationMode;
bool get bellDelayEnabled => _bellDelayEnabled;
int get bellDelay => _bellDelay;
bool get gradeOpeningFun => _gradeOpeningFun;
Future<void> update(
BuildContext context, {
@ -263,6 +270,7 @@ class SettingsProvider extends ChangeNotifier {
bool? presentationMode,
bool? bellDelayEnabled,
int? bellDelay,
bool? gradeOpeningFun,
}) async {
if (language != null && language != _language) _language = language;
if (startPage != null && startPage != _startPage) _startPage = startPage;
@ -289,6 +297,7 @@ class SettingsProvider extends ChangeNotifier {
if (presentationMode != null && presentationMode != _presentationMode) _presentationMode = presentationMode;
if (bellDelay != null && bellDelay != _bellDelay) _bellDelay = bellDelay;
if (bellDelayEnabled != null && bellDelayEnabled != _bellDelayEnabled) _bellDelayEnabled = bellDelayEnabled;
if (gradeOpeningFun != null && gradeOpeningFun != _gradeOpeningFun) _gradeOpeningFun = gradeOpeningFun;
database ??= Provider.of<DatabaseProvider>(context, listen: false);
if (store) await database.store.storeSettings(this);

@ -1 +1 @@
Subproject commit 189ea69afc7c13cc71852b94a893f1024dd355ee
Subproject commit a417359d1aa9405e6a6ae80a96c1c1451f390323