diff --git a/mobile/.idea/misc.xml b/mobile/.idea/misc.xml index b2c751a..a4f09e2 100644 --- a/mobile/.idea/misc.xml +++ b/mobile/.idea/misc.xml @@ -1,6 +1,7 @@ + - + diff --git a/mobile/app/src/main/java/com/odweta/solon/Global.kt b/mobile/app/src/main/java/com/odweta/solon/Global.kt index 4044199..b899408 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Global.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Global.kt @@ -199,8 +199,10 @@ enum class ScreenElement { class Global { lateinit var timetableJSON: JSONObject lateinit var marksJSON: JSONObject + lateinit var finalMarksJSON: JSONObject lateinit var marks: MutableMap> lateinit var newMarks: MutableMap> + lateinit var finalMarks: Map lateinit var settings: SettingsData lateinit var fileDir: File @@ -244,6 +246,7 @@ class Global { val marks: String = "marks.json" val settings: String = "settings.txt" val lectureNotes: String = "lecture_notes.csv" + val finalMarks: String = "final_marks.txt" } val filePaths = FilePaths() @@ -253,6 +256,7 @@ class Global { val userData = "$apiBase/v1/user" val timetable = "$apiBase/v1/timeTable" var marks: String = "$apiBase/v1/students//marks/list" + var finalMarks: String ="$apiBase/v1/students//marks/final" } val apiEndPoints = APIEndPoints() diff --git a/mobile/app/src/main/java/com/odweta/solon/Launch.kt b/mobile/app/src/main/java/com/odweta/solon/Launch.kt index fdbc98c..fa3bda9 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Launch.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Launch.kt @@ -34,15 +34,18 @@ fun remoteLoad(ctx: Context) { // fetch remote data global.timetableJSON = networkRequestFactory.perform(NetworkRequestType.Timetable) global.marksJSON = networkRequestFactory.perform(NetworkRequestType.Marks) + global.finalMarksJSON = networkRequestFactory.perform(NetworkRequestType.FinalMarks) // save to local for later local load Util.saveStringToFile(global.filePaths.timetable, global.timetableJSON.toString()) Util.saveStringToFile(global.filePaths.marks, global.marksJSON.toString()) + Util.saveStringToFile(global.filePaths.finalMarks, global.finalMarksJSON.toString()) launchContinue( ctx, global.timetableJSON, - global.marksJSON + global.marksJSON, + global.finalMarksJSON ) } } else { @@ -50,7 +53,8 @@ fun remoteLoad(ctx: Context) { launchContinue( ctx, networkRequestFactory.perform(NetworkRequestType.Timetable), - networkRequestFactory.perform(NetworkRequestType.Marks) + networkRequestFactory.perform(NetworkRequestType.Marks), + networkRequestFactory.perform(NetworkRequestType.FinalMarks) ) } } @@ -61,27 +65,30 @@ fun localLoad(ctx: Context) { global.studentId = Parsing.getStudentId() global.studentClass = Parsing.getStudentClass() global.apiEndPoints.marks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/list" + global.apiEndPoints.finalMarks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/final" val localTimetable = JSONObject(Util.fileToString(global.filePaths.timetable)) val localMarks = JSONObject(Util.fileToString(global.filePaths.marks)) + val localFinalMarks = JSONObject(Util.fileToString(global.filePaths.finalMarks)) launchContinue( ctx, localTimetable, - localMarks + localMarks, + localFinalMarks ) } fun launchContinue( ctx: Context, timetable: JSONObject, - marks: JSONObject + marks: JSONObject, + finalMarks: JSONObject ) { // parse timetable and marks - val parsedTimetable = Parsing.parseTimetable(timetable) - global.timetable = parsedTimetable - val parsedMarks = Parsing.parseMarks(marks) - global.marks = parsedMarks + global.timetable = Parsing.parseTimetable(timetable) + global.marks = Parsing.parseMarks(marks) global.newMarks = Parsing.parseNewMarks(marks) + global.finalMarks = Parsing.parseFinalMarks(finalMarks) // // load the settings // global.settings = Util.fileToString(global.filePaths.settings).toSettingsData() diff --git a/mobile/app/src/main/java/com/odweta/solon/Marks.kt b/mobile/app/src/main/java/com/odweta/solon/Marks.kt index 32c9b5a..621ded4 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Marks.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Marks.kt @@ -121,7 +121,7 @@ fun NewMarksScreen() { modifier = Modifier.verticalScroll(ss) ) { for ((k, v) in global.newMarks) { - if (v.size > 0) { + if (v.isNotEmpty()) { Column( modifier = Modifier .padding(horizontal = 10.dp) @@ -242,14 +242,13 @@ fun FinalMarksScreen() { Column( modifier = Modifier.verticalScroll(ss) ) { - Text("test", color = Color.White) - Text("test", color = Color.White) - Text("test", color = Color.White) - Text("test", color = Color.White) - Text("test", color = Color.White) - Text("test", color = Color.White) - Text("test", color = Color.White) - Text("test", color = Color.White) + Text(Util.fileToString(global.filePaths.finalMarks), color = Color.White) + for ((subject, mark) in global.finalMarks) { + Row { + Text(subject, color = Color.White) + Text(mark.toString(), color = Color.White, modifier = Modifier.padding(10.dp)) + } + } } } } diff --git a/mobile/app/src/main/java/com/odweta/solon/Network.kt b/mobile/app/src/main/java/com/odweta/solon/Network.kt index 889a9e2..aeb2808 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Network.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Network.kt @@ -32,6 +32,7 @@ fun setupAPI() { global.studentId = Parsing.getStudentId() global.apiEndPoints.marks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/list" + global.apiEndPoints.finalMarks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/final" global.isAPISetUp = true } @@ -40,6 +41,7 @@ enum class NetworkRequestType { Token, Timetable, Marks, + FinalMarks, UserData } @@ -71,6 +73,7 @@ object NetworkRequestFactory: NetworkRequestInterface { } NetworkRequestType.Timetable -> return getAPI(global.apiEndPoints.timetable) NetworkRequestType.Marks -> return getAPI(global.apiEndPoints.marks) + NetworkRequestType.FinalMarks -> return getAPI(global.apiEndPoints.finalMarks) NetworkRequestType.UserData -> return getAPI(global.apiEndPoints.userData) } } @@ -82,7 +85,13 @@ object NetworkRequestFactory: NetworkRequestInterface { .get() .build() - return client.newCall(request).execute() + return try { + client.newCall(request).execute() + } catch (e: Exception) { + Response.Builder() + .code(500) + .build() + } } private fun post(url: String, headers: Headers, body: FormBody): Response { @@ -92,7 +101,13 @@ object NetworkRequestFactory: NetworkRequestInterface { .post(body) .build() - return client.newCall(request).execute() + return try { + client.newCall(request).execute() + } catch (e: Exception) { + Response.Builder() + .code(500) + .build() + } } private fun getAPI(url: String): JSONObject { diff --git a/mobile/app/src/main/java/com/odweta/solon/Parsing.kt b/mobile/app/src/main/java/com/odweta/solon/Parsing.kt index 089d386..51bb107 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Parsing.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Parsing.kt @@ -386,16 +386,6 @@ class Parsing { for (i in 0.. { + return mapOf( + "AJ" to 1, + "B" to 5, + "Pr" to 1 + ) + } + fun getStudentClass(): String { return if (!userIsParent()) { global.userData