Merge remote-tracking branch 'origin/api-v2' into api-v2

This commit is contained in:
Kuba Szczodrzyński 2019-10-11 23:00:50 +02:00
commit 39050cdee5
3 changed files with 74 additions and 20 deletions

View File

@ -5,10 +5,12 @@
package pl.szczodrzynski.edziennik.api.v2.librus.data package pl.szczodrzynski.edziennik.api.v2.librus.data
import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.R
import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_EVENTS
import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_ME import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_ME
import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_NORMAL_GRADES import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_NORMAL_GRADES
import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_SCHOOLS import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_SCHOOLS
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
import pl.szczodrzynski.edziennik.api.v2.librus.data.api.LibrusApiEvents
import pl.szczodrzynski.edziennik.api.v2.librus.data.api.LibrusApiGrades import pl.szczodrzynski.edziennik.api.v2.librus.data.api.LibrusApiGrades
import pl.szczodrzynski.edziennik.api.v2.librus.data.api.LibrusApiMe import pl.szczodrzynski.edziennik.api.v2.librus.data.api.LibrusApiMe
import pl.szczodrzynski.edziennik.api.v2.librus.data.api.LibrusApiSchools import pl.szczodrzynski.edziennik.api.v2.librus.data.api.LibrusApiSchools
@ -52,6 +54,10 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) {
data.startProgress(R.string.edziennik_progress_endpoint_grades) data.startProgress(R.string.edziennik_progress_endpoint_grades)
LibrusApiGrades(data) { onSuccess() } LibrusApiGrades(data) { onSuccess() }
} }
ENDPOINT_LIBRUS_API_EVENTS -> {
data.startProgress(R.string.sync_action_syncing_events)
LibrusApiEvents(data) { onSuccess() }
}
else -> onSuccess() else -> onSuccess()
} }
} }

View File

@ -4,8 +4,15 @@
package pl.szczodrzynski.edziennik.api.v2.librus.data.api package pl.szczodrzynski.edziennik.api.v2.librus.data.api
import pl.szczodrzynski.edziennik.*
import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_EVENTS
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
import pl.szczodrzynski.edziennik.utils.models.Date
import pl.szczodrzynski.edziennik.utils.models.Time
class LibrusApiEvents(override val data: DataLibrus, class LibrusApiEvents(override val data: DataLibrus,
val onSuccess: () -> Unit) : LibrusApi(data) { val onSuccess: () -> Unit) : LibrusApi(data) {
@ -14,13 +21,55 @@ class LibrusApiEvents(override val data: DataLibrus,
} }
init { init {
/*apiGet(LibrusApiMe.TAG, "") { json -> apiGet(TAG, "HomeWorks") { json ->
val events = json.getJsonArray("HomeWorks")
// on error events?.forEach { eventEl ->
data.error(TAG, ERROR_LIBRUS_API_, response, json) val event = eventEl.asJsonObject
data.setSyncNext(ENDPOINT_LIBRUS_API_, 2 * DAY) val id = event.getLong("Id") ?: return@forEach
val eventDate = Date.fromY_m_d(event.getString("Date") ?: return@forEach)
val topic = event.getString("Content") ?: return@forEach
val type = event.getJsonObject("Category")?.getInt("Id") ?: -1
val teacherId = event.getJsonObject("CreatedBy")?.getLong("Id") ?: -1
val subjectId = event.getJsonObject("Subject")?.getLong("Id") ?: -1
val teamId = event.getJsonObject("Class")?.getLong("Id") ?: -1
val lessonNo = event.getInt("LessonNo")
val lessonRange = data.lessonRanges.singleOrNull { it.lessonNumber == lessonNo }
val startTime = lessonRange?.startTime
?: Time.fromH_m(event.getString("TimeFrom") ?: return@forEach)
val eventObject = Event(
profileId,
id,
eventDate,
startTime,
topic,
-1,
type,
false,
teacherId,
subjectId,
teamId
)
val addedDate = Date.fromIso(event.get("AddDate").asString)
data.eventList.add(eventObject)
data.metadataList.add(
Metadata(
profileId,
Metadata.TYPE_EVENT,
id,
profile?.empty ?: false,
profile?.empty ?: false,
addedDate
))
}
data.setSyncNext(ENDPOINT_LIBRUS_API_EVENTS, SYNC_ALWAYS)
onSuccess() onSuccess()
}*/ }
} }
} }

View File

@ -21,16 +21,15 @@ class LibrusApiGrades(override val data: DataLibrus,
apiGet(TAG, "Grades") { json -> apiGet(TAG, "Grades") { json ->
val grades = json.getJsonArray("Grades") val grades = json.getJsonArray("Grades")
grades?.forEach { gradeEl -> grades?.forEach { gradeEl ->
val grade = gradeEl.asJsonObject val grade = gradeEl.asJsonObject
val id = grade.get("Id").asLong val id = grade.getLong("Id") ?: return@forEach
val categoryId = grade.get("Category").asJsonObject.get("Id").asLong val categoryId = grade.getJsonObject("Category")?.getLong("Id") ?: return@forEach
val name = grade.get("Grade").asString val name = grade.getString("Grade") ?: return@forEach
val semester = grade.get("Semester").asInt val semester = grade.getInt("Semester") ?: return@forEach
val teacherId = grade.get("AddedBy").asJsonObject.get("Id").asLong val teacherId = grade.getJsonObject("AddedBy")?.getLong("Id") ?: -1
val subjectId = grade.get("Subject").asJsonObject.get("Id").asLong val subjectId = grade.getJsonObject("Subject")?.getLong("Id") ?: -1
val category = data.gradeCategories.singleOrNull { it.categoryId == categoryId } val category = data.gradeCategories.singleOrNull { it.categoryId == categoryId }
val categoryName = category?.text ?: "" val categoryName = category?.text ?: ""
@ -60,20 +59,20 @@ class LibrusApiGrades(override val data: DataLibrus,
) )
when { when {
grade.get("IsConstituent").asBoolean -> grade.getBoolean("IsConstituent") ?: false ->
gradeObject.type = Grade.TYPE_NORMAL gradeObject.type = Grade.TYPE_NORMAL
grade.get("IsSemester").asBoolean -> // semester final grade.getBoolean("IsSemester") ?: false -> // semester final
gradeObject.type = if (gradeObject.semester == 1) Grade.TYPE_SEMESTER1_FINAL else Grade.TYPE_SEMESTER2_FINAL gradeObject.type = if (gradeObject.semester == 1) Grade.TYPE_SEMESTER1_FINAL else Grade.TYPE_SEMESTER2_FINAL
grade.get("IsSemesterProposition").asBoolean -> // semester proposed grade.getBoolean("IsSemesterProposition") ?: false -> // semester proposed
gradeObject.type = if (gradeObject.semester == 1) Grade.TYPE_SEMESTER1_PROPOSED else Grade.TYPE_SEMESTER2_PROPOSED gradeObject.type = if (gradeObject.semester == 1) Grade.TYPE_SEMESTER1_PROPOSED else Grade.TYPE_SEMESTER2_PROPOSED
grade.get("IsFinal").asBoolean -> // year final grade.getBoolean("IsFinal") ?: false -> // year final
gradeObject.type = Grade.TYPE_YEAR_FINAL gradeObject.type = Grade.TYPE_YEAR_FINAL
grade.get("IsFinalProposition").asBoolean -> // year final grade.getBoolean("IsFinalProposition") ?: false -> // year final
gradeObject.type = Grade.TYPE_YEAR_PROPOSED gradeObject.type = Grade.TYPE_YEAR_PROPOSED
} }
grade.getJsonObject("Improvement")?.also { grade.getJsonObject("Improvement")?.also {
val historicalId = it.get("Id").asLong val historicalId = it.getLong("Id")
data.gradeList.firstOrNull { grade -> grade.id == historicalId }?.also { grade -> data.gradeList.firstOrNull { grade -> grade.id == historicalId }?.also { grade ->
grade.parentId = gradeObject.id grade.parentId = gradeObject.id
if (grade.name == "nb") grade.weight = 0f if (grade.name == "nb") grade.weight = 0f
@ -95,7 +94,7 @@ class LibrusApiGrades(override val data: DataLibrus,
)) ))
} }
data.setSyncNext(ENDPOINT_LIBRUS_API_NORMAL_GRADES, SYNC_ALWAYS, MainActivity.DRAWER_ITEM_GRADES) data.setSyncNext(ENDPOINT_LIBRUS_API_NORMAL_GRADES, SYNC_ALWAYS)
onSuccess() onSuccess()
} }
} }