forked from firka/student-legacy
gradeopening db
This commit is contained in:
parent
47a18c1ec2
commit
38eb8c440b
@ -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");
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user