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, "vibration_strength": int, "ab_weeks": int, "swap_ab_weeks": int,
"notifications": int, "notifications_bitfield": int, "notification_poll_interval": int, // notifications "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, "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( const usersDB = DatabaseStruct(
"users", {"id": String, "name": String, "username": String, "password": String, "institute_code": String, "student": String, "role": int}); "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, "id": String, "grades": String, "timetable": String, "exams": String, "homework": String, "messages": String, "notes": String,
"events": String, "absences": String, "group_averages": String, "events": String, "absences": String, "group_averages": String,
// "subject_lesson_count": String, // non kreta data // "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)"); 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": "[]", "grades": "[]", "timetable": "[]", "exams": "[]", "homework": "[]", "messages": "[]", "notes": "[]", "events": "[]", "absences": "[]",
"group_averages": "[]", "group_averages": "[]",
// "subject_lesson_count": "{}", // non kreta data // "subject_lesson_count": "{}", // non kreta data
"last_seen_grade": "0",
}); });
} catch (error) { } catch (error) {
print("ERROR: migrateDB: $error"); print("ERROR: migrateDB: $error");

View File

@ -132,4 +132,13 @@ class UserDatabaseQuery {
SubjectLessonCount lessonCount = SubjectLessonCount.fromMap(jsonDecode(lessonCountJson) as Map); SubjectLessonCount lessonCount = SubjectLessonCount.fromMap(jsonDecode(lessonCountJson) as Map);
return lessonCount; 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]); await db.update("user_data", {"group_averages": groupAveragesJson}, where: "id = ?", whereArgs: [userId]);
} }
Future<void> storeSubjectLessonCount(SubjectLessonCount lessonCount, {required String userId}) async { Future<void> storeSubjectLessonCount(SubjectLessonCount lessonCount, {required String userId}) async {
String lessonCountJson = jsonEncode(lessonCount.toMap()); String lessonCountJson = jsonEncode(lessonCount.toMap());
await db.update("user_data", {"subject_lesson_count": lessonCountJson}, where: "id = ?", whereArgs: [userId]); 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 _presentationMode;
bool _bellDelayEnabled; bool _bellDelayEnabled;
int _bellDelay; int _bellDelay;
bool _gradeOpeningFun;
SettingsProvider({ SettingsProvider({
required String language, required String language,
@ -80,6 +81,7 @@ class SettingsProvider extends ChangeNotifier {
required bool presentationMode, required bool presentationMode,
required bool bellDelayEnabled, required bool bellDelayEnabled,
required int bellDelay, required int bellDelay,
required bool gradeOpeningFun,
}) : _language = language, }) : _language = language,
_startPage = startPage, _startPage = startPage,
_rounding = rounding, _rounding = rounding,
@ -102,7 +104,8 @@ class SettingsProvider extends ChangeNotifier {
_goodStudent = goodStudent, _goodStudent = goodStudent,
_presentationMode = presentationMode, _presentationMode = presentationMode,
_bellDelayEnabled = bellDelayEnabled, _bellDelayEnabled = bellDelayEnabled,
_bellDelay = bellDelay; _bellDelay = bellDelay,
_gradeOpeningFun = gradeOpeningFun;
factory SettingsProvider.fromMap(Map map) { factory SettingsProvider.fromMap(Map map) {
Map<String, Object?>? configMap; Map<String, Object?>? configMap;
@ -143,6 +146,7 @@ class SettingsProvider extends ChangeNotifier {
presentationMode: map["presentation_mode"] == 1, presentationMode: map["presentation_mode"] == 1,
bellDelayEnabled: map["bell_delay_enabled"] == 1, bellDelayEnabled: map["bell_delay_enabled"] == 1,
bellDelay: map["bell_delay"], bellDelay: map["bell_delay"],
gradeOpeningFun: map["grade_opening_fun"] == 1,
); );
} }
@ -174,6 +178,7 @@ class SettingsProvider extends ChangeNotifier {
"presentation_mode": _presentationMode ? 1 : 0, "presentation_mode": _presentationMode ? 1 : 0,
"bell_delay_enabled": _bellDelayEnabled ? 1 : 0, "bell_delay_enabled": _bellDelayEnabled ? 1 : 0,
"bell_delay": _bellDelay, "bell_delay": _bellDelay,
"grade_opening_fun": _gradeOpeningFun ? 1 : 0,
}; };
} }
@ -208,6 +213,7 @@ class SettingsProvider extends ChangeNotifier {
presentationMode: false, presentationMode: false,
bellDelayEnabled: false, bellDelayEnabled: false,
bellDelay: 0, bellDelay: 0,
gradeOpeningFun: true,
); );
} }
@ -235,6 +241,7 @@ class SettingsProvider extends ChangeNotifier {
bool get presentationMode => _presentationMode; bool get presentationMode => _presentationMode;
bool get bellDelayEnabled => _bellDelayEnabled; bool get bellDelayEnabled => _bellDelayEnabled;
int get bellDelay => _bellDelay; int get bellDelay => _bellDelay;
bool get gradeOpeningFun => _gradeOpeningFun;
Future<void> update( Future<void> update(
BuildContext context, { BuildContext context, {
@ -263,6 +270,7 @@ class SettingsProvider extends ChangeNotifier {
bool? presentationMode, bool? presentationMode,
bool? bellDelayEnabled, bool? bellDelayEnabled,
int? bellDelay, int? bellDelay,
bool? gradeOpeningFun,
}) async { }) async {
if (language != null && language != _language) _language = language; if (language != null && language != _language) _language = language;
if (startPage != null && startPage != _startPage) _startPage = startPage; if (startPage != null && startPage != _startPage) _startPage = startPage;
@ -289,6 +297,7 @@ class SettingsProvider extends ChangeNotifier {
if (presentationMode != null && presentationMode != _presentationMode) _presentationMode = presentationMode; if (presentationMode != null && presentationMode != _presentationMode) _presentationMode = presentationMode;
if (bellDelay != null && bellDelay != _bellDelay) _bellDelay = bellDelay; if (bellDelay != null && bellDelay != _bellDelay) _bellDelay = bellDelay;
if (bellDelayEnabled != null && bellDelayEnabled != _bellDelayEnabled) _bellDelayEnabled = bellDelayEnabled; if (bellDelayEnabled != null && bellDelayEnabled != _bellDelayEnabled) _bellDelayEnabled = bellDelayEnabled;
if (gradeOpeningFun != null && gradeOpeningFun != _gradeOpeningFun) _gradeOpeningFun = gradeOpeningFun;
database ??= Provider.of<DatabaseProvider>(context, listen: false); database ??= Provider.of<DatabaseProvider>(context, listen: false);
if (store) await database.store.storeSettings(this); if (store) await database.store.storeSettings(this);

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