diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Regexes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Regexes.kt
index b68530f1..4c5ebbee 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Regexes.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Regexes.kt
@@ -138,6 +138,9 @@ object Regexes {
val EDUDZIENNIK_TEACHER_ID by lazy {
"""/Teachers/([\w-_]+?)/""".toRegex()
}
+ val EDUDZIENNIK_EVENT_ID by lazy {
+ """/KlassEvent/([\w-_]+?)/""".toRegex()
+ }
val EDUDZIENNIK_SCHOOL_DETAIL_ID by lazy {
""" Unit) {
data.startProgress(R.string.edziennik_progress_endpoint_homework)
EdudziennikWebHomework(data, onSuccess)
}
+ ENDPOINT_EDUDZIENNIK_WEB_EVENTS -> {
+ data.startProgress(R.string.edziennik_progress_endpoint_events)
+ EdudziennikWebEvents(data, onSuccess)
+ }
ENDPOINT_EDUDZIENNIK_WEB_LUCKY_NUMBER -> {
data.startProgress(R.string.edziennik_progress_endpoint_lucky_number)
EdudziennikWebLuckyNumber(data, onSuccess)
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt
new file mode 100644
index 00000000..be9574d7
--- /dev/null
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) Kacper Ziubryniewicz 2020-1-1
+ */
+
+package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web
+
+import org.jsoup.Jsoup
+import pl.szczodrzynski.edziennik.crc32
+import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_EVENT_ID
+import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik
+import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_EVENTS
+import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb
+import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel
+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.get
+import pl.szczodrzynski.edziennik.utils.models.Date
+
+class EdudziennikWebEvents(override val data: DataEdudziennik,
+ val onSuccess: () -> Unit) : EdudziennikWeb(data) {
+ companion object {
+ const val TAG = "EdudziennikWebEvents"
+ }
+
+ init { data.profile?.also { profile ->
+ webGet(TAG, data.studentAndClassesEndpoint + "KlassEvent", xhr = true) { text ->
+ val doc = Jsoup.parseBodyFragment("
")
+
+ doc.getElementsByTag("tr").forEach { eventElement ->
+ val date = Date.fromY_m_d(eventElement.child(1).text())
+
+ val titleElement = eventElement.child(2).child(0)
+ val title = titleElement.text().trim()
+
+ val id = EDUDZIENNIK_EVENT_ID.find(titleElement.attr("href"))?.get(1)?.crc32()
+ ?: return@forEach
+
+ val eventObject = Event(
+ profileId,
+ id,
+ date,
+ null,
+ title,
+ -1,
+ Event.TYPE_CLASS_EVENT,
+ false,
+ -1,
+ -1,
+ data.teamClass?.id ?: -1
+ )
+
+ data.eventList.add(eventObject)
+ data.metadataList.add(Metadata(
+ profileId,
+ Metadata.TYPE_EVENT,
+ id,
+ profile.empty,
+ profile.empty,
+ System.currentTimeMillis()
+ ))
+ }
+
+ data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_CLASS_EVENT))
+
+ data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_EVENTS, SYNC_ALWAYS)
+ onSuccess()
+ }
+ } ?: onSuccess() }
+}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt
index 40062335..805bed1c 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt
@@ -45,7 +45,7 @@ class EdudziennikWebExams(override val data: DataEdudziennik,
val date = Date.fromY_m_d(dateString)
val lessons = data.app.db.timetableDao().getForDateNow(profileId, date)
- val startTime = lessons.firstOrNull { it.subjectId == subject.id }?.displayStartTime
+ val startTime = lessons.firstOrNull { it.displaySubjectId == subject.id }?.displayStartTime
val eventTypeElement = examElement.child(3).child(0)
val eventTypeId = EDUDZIENNIK_EVENT_TYPE_ID.find(eventTypeElement.attr("href"))?.get(1)
@@ -78,7 +78,10 @@ class EdudziennikWebExams(override val data: DataEdudziennik,
))
}
- data.toRemove.add(DataRemoveModel.Events.futureExceptType(Event.TYPE_HOMEWORK))
+ data.toRemove.add(DataRemoveModel.Events.futureExceptTypes(listOf(
+ Event.TYPE_HOMEWORK,
+ Event.TYPE_CLASS_EVENT
+ )))
data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_EXAMS, SYNC_ALWAYS)
onSuccess()
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt
index c77606ec..af846615 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt
@@ -30,7 +30,7 @@ class EdudziennikWebHomework(override val data: DataEdudziennik,
val doc = Jsoup.parseBodyFragment("")
if (doc.getElementsByClass("message").text().trim() != "Brak prac domowych") {
- doc.select("tr").forEach { homeworkElement ->
+ doc.getElementsByTag("tr").forEach { homeworkElement ->
val dateElement = homeworkElement.getElementsByClass("date").first().child(0)
val id = EDUDZIENNIK_HOMEWORK_ID.find(dateElement.attr("href"))?.get(1)?.crc32()
?: return@forEach