mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-02-22 06:24:44 +01:00
[API/Librus] Add getting descriptive grades and its categories.
This commit is contained in:
parent
3723abbbbb
commit
9b5cf3f636
@ -89,6 +89,11 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
data.startProgress(R.string.edziennik_progress_endpoint_grade_categories)
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_categories)
|
||||||
LibrusApiBehaviourGradeCategories(data, onSuccess)
|
LibrusApiBehaviourGradeCategories(data, onSuccess)
|
||||||
}
|
}
|
||||||
|
ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES -> {
|
||||||
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_categories)
|
||||||
|
LibrusApiDescriptiveGradeCategories(data, onSuccess)
|
||||||
|
}
|
||||||
|
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS -> {
|
ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS -> {
|
||||||
data.startProgress(R.string.edziennik_progress_endpoint_grade_comments)
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_comments)
|
||||||
LibrusApiGradeComments(data, onSuccess)
|
LibrusApiGradeComments(data, onSuccess)
|
||||||
@ -97,6 +102,7 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
data.startProgress(R.string.edziennik_progress_endpoint_grade_comments)
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_comments)
|
||||||
LibrusApiBehaviourGradeComments(data, onSuccess)
|
LibrusApiBehaviourGradeComments(data, onSuccess)
|
||||||
}
|
}
|
||||||
|
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GRADES -> {
|
ENDPOINT_LIBRUS_API_NORMAL_GRADES -> {
|
||||||
data.startProgress(R.string.edziennik_progress_endpoint_grades)
|
data.startProgress(R.string.edziennik_progress_endpoint_grades)
|
||||||
LibrusApiGrades(data, onSuccess)
|
LibrusApiGrades(data, onSuccess)
|
||||||
@ -105,6 +111,10 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
data.startProgress(R.string.edziennik_progress_endpoint_behaviour_grades)
|
data.startProgress(R.string.edziennik_progress_endpoint_behaviour_grades)
|
||||||
LibrusApiBehaviourGrades(data, onSuccess)
|
LibrusApiBehaviourGrades(data, onSuccess)
|
||||||
}
|
}
|
||||||
|
ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES -> {
|
||||||
|
data.startProgress(R.string.edziennik_progress_endpoint_descriptive_grades)
|
||||||
|
LibrusApiDescriptiveGrades(data, onSuccess)
|
||||||
|
}
|
||||||
// TODO grades
|
// TODO grades
|
||||||
|
|
||||||
ENDPOINT_LIBRUS_API_EVENT_TYPES -> {
|
ENDPOINT_LIBRUS_API_EVENT_TYPES -> {
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-12-29
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.api
|
||||||
|
|
||||||
|
import android.graphics.Color
|
||||||
|
import pl.szczodrzynski.edziennik.*
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
|
|
||||||
|
class LibrusApiDescriptiveGradeCategories(override val data: DataLibrus,
|
||||||
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||||
|
companion object {
|
||||||
|
const val TAG = "LibrusApiDescriptiveGradeCategories"
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
apiGet(TAG, "DescriptiveTextGrades/Skills") { json ->
|
||||||
|
json.getJsonArray("Skills")?.asJsonObjectList()?.forEach { category ->
|
||||||
|
val id = category.getLong("Id") ?: return@forEach
|
||||||
|
val name = category.getString("Name") ?: ""
|
||||||
|
val color = category.getJsonObject("Color")?.getInt("Id")
|
||||||
|
?.let { data.getColor(it) } ?: Color.BLUE
|
||||||
|
|
||||||
|
val gradeCategoryObject = GradeCategory(
|
||||||
|
profileId,
|
||||||
|
id,
|
||||||
|
-1f,
|
||||||
|
color,
|
||||||
|
name
|
||||||
|
).apply {
|
||||||
|
type = GradeCategory.TYPE_DESCRIPTIVE
|
||||||
|
}
|
||||||
|
|
||||||
|
data.gradeCategories.put(id, gradeCategoryObject)
|
||||||
|
}
|
||||||
|
|
||||||
|
data.setSyncNext(ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES, SYNC_ALWAYS)
|
||||||
|
onSuccess()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-12-29
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.api
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.*
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
|
||||||
|
class LibrusApiDescriptiveGrades(override val data: DataLibrus,
|
||||||
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||||
|
companion object {
|
||||||
|
const val TAG = "LibrusApiDescriptiveGrades"
|
||||||
|
}
|
||||||
|
|
||||||
|
init { data.profile?.also { profile ->
|
||||||
|
apiGet(TAG, "BaseTextGrades") { json ->
|
||||||
|
|
||||||
|
json.getJsonArray("Grades")?.asJsonObjectList()?.forEach { grade ->
|
||||||
|
val id = grade.getLong("Id") ?: return@forEach
|
||||||
|
val teacherId = grade.getJsonObject("AddedBy")?.getLong("Id") ?: return@forEach
|
||||||
|
val semester = grade.getInt("Semester") ?: return@forEach
|
||||||
|
val subjectId = grade.getJsonObject("Subject")?.getLong("Id") ?: return@forEach
|
||||||
|
val description = grade.getString("Grade")
|
||||||
|
|
||||||
|
val categoryId = grade.getJsonObject("Skill")?.getLong("Id")
|
||||||
|
?: grade.getJsonObject("Category")?.getLong("Id")
|
||||||
|
?: return@forEach
|
||||||
|
val type = when (grade.getJsonObject("Category")) {
|
||||||
|
null -> Grade.TYPE_DESCRIPTIVE
|
||||||
|
else -> Grade.TYPE_TEXT
|
||||||
|
}
|
||||||
|
|
||||||
|
val category = data.gradeCategories.singleOrNull {
|
||||||
|
it.categoryId == categoryId && it.type == when (type) {
|
||||||
|
Grade.TYPE_DESCRIPTIVE -> GradeCategory.TYPE_DESCRIPTIVE
|
||||||
|
else -> GradeCategory.TYPE_TEXT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val addedDate = Date.fromIso(grade.getString("AddDate") ?: return@forEach)
|
||||||
|
|
||||||
|
val gradeObject = Grade(
|
||||||
|
profileId,
|
||||||
|
id,
|
||||||
|
category?.text ?: "",
|
||||||
|
category?.color ?: -1,
|
||||||
|
description,
|
||||||
|
" ",
|
||||||
|
0f,
|
||||||
|
0f,
|
||||||
|
semester,
|
||||||
|
teacherId,
|
||||||
|
subjectId
|
||||||
|
).apply {
|
||||||
|
this.type = type
|
||||||
|
}
|
||||||
|
|
||||||
|
data.gradeList.add(gradeObject)
|
||||||
|
data.metadataList.add(Metadata(
|
||||||
|
profileId,
|
||||||
|
Metadata.TYPE_GRADE,
|
||||||
|
id,
|
||||||
|
profile.empty,
|
||||||
|
profile.empty,
|
||||||
|
addedDate
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
data.setSyncNext(ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES, SYNC_ALWAYS)
|
||||||
|
onSuccess()
|
||||||
|
}
|
||||||
|
} ?: onSuccess() }
|
||||||
|
}
|
@ -29,6 +29,8 @@ public class GradeCategory {
|
|||||||
public static final int TYPE_NORMAL_COMMENT = 1;
|
public static final int TYPE_NORMAL_COMMENT = 1;
|
||||||
public static final int TYPE_BEHAVIOUR = 2;
|
public static final int TYPE_BEHAVIOUR = 2;
|
||||||
public static final int TYPE_BEHAVIOUR_COMMENT = 3;
|
public static final int TYPE_BEHAVIOUR_COMMENT = 3;
|
||||||
|
public static final int TYPE_DESCRIPTIVE = 4;
|
||||||
|
public static final int TYPE_TEXT = 5;
|
||||||
|
|
||||||
public GradeCategory(int profileId, long categoryId, float weight, int color, String text) {
|
public GradeCategory(int profileId, long categoryId, float weight, int color, String text) {
|
||||||
this.profileId = profileId;
|
this.profileId = profileId;
|
||||||
|
@ -1131,4 +1131,5 @@
|
|||||||
<string name="login_edudziennik_subtitle">Użyj danych, którymi logujesz się do wersji komputerowej Edudziennika.</string>
|
<string name="login_edudziennik_subtitle">Użyj danych, którymi logujesz się do wersji komputerowej Edudziennika.</string>
|
||||||
<string name="edziennik_progress_login_edudziennik_web">Logowanie do Edudziennika</string>
|
<string name="edziennik_progress_login_edudziennik_web">Logowanie do Edudziennika</string>
|
||||||
<string name="dialog_error_details_title">Szczegóły błędu</string>
|
<string name="dialog_error_details_title">Szczegóły błędu</string>
|
||||||
|
<string name="edziennik_progress_endpoint_descriptive_grades">Pobieranie ocen opisowych...</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user