diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/api/LibrusApiTimetables.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/api/LibrusApiTimetables.kt index 88151096..6fd669b5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/api/LibrusApiTimetables.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/api/LibrusApiTimetables.kt @@ -50,7 +50,7 @@ class LibrusApiTimetables(override val data: DataLibrus, } if (day.isNullOrEmpty() || !lessonsFound) { - data.lessonNewList += Lesson(profileId, lessonDate.inUnix).apply { + data.lessonNewList += Lesson(profileId, lessonDate.value.toLong()).apply { type = Lesson.TYPE_NO_LESSONS date = lessonDate } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/MobidziennikFeatures.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/MobidziennikFeatures.kt index 057ce2b9..234b41e7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/MobidziennikFeatures.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/MobidziennikFeatures.kt @@ -21,10 +21,10 @@ const val ENDPOINT_MOBIDZIENNIK_API2_MAIN = 3000 val MobidziennikFeatures = listOf( // always synced - /*Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_ALWAYS_NEEDED, listOf( + Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_ALWAYS_NEEDED, listOf( ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB, ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL to LOGIN_METHOD_MOBIDZIENNIK_WEB - ), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),*/ + ), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)), // TODO divide features into separate view IDs (all with API_MAIN) // push config /*Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_PUSH_CONFIG, listOf( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/data/api/MobidziennikApiTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/data/api/MobidziennikApiTimetable.kt index 3f529a7c..fdc0f5b2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/data/api/MobidziennikApiTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/mobidziennik/data/api/MobidziennikApiTimetable.kt @@ -4,7 +4,9 @@ package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api +import pl.szczodrzynski.edziennik.App.profileId import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik +import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata import pl.szczodrzynski.edziennik.data.db.modules.timetable.Lesson import pl.szczodrzynski.edziennik.fixName @@ -16,11 +18,24 @@ class MobidziennikApiTimetable(val data: DataMobidziennik, rows: List) { init { val lessons = rows.filterNot { it.isEmpty() }.map { it.split("|") } + val dataStart = Date.getToday() + val dataEnd = dataStart.clone().stepForward(0, 0, 7 + (6 - dataStart.weekDay)) + + data.toRemove.add(DataRemoveModel.Timetable.between(dataStart.clone(), dataEnd)) + + val dataDays = mutableListOf() + while (dataStart <= dataEnd) { + dataDays += dataStart.value + dataStart.stepForward(0, 0, 1) + } + for (lesson in lessons) { val date = Date.fromYmd(lesson[2]) val startTime = Time.fromYmdHm(lesson[3]) val endTime = Time.fromYmdHm(lesson[4]) - val id = date.combineWith(startTime) / 1000L + val id = date.combineWith(startTime) / 6L * 10L + (lesson.joinToString("|").hashCode() and 0xFFFF) + + dataDays.remove(date.value) val subjectId = data.subjectList.singleOrNull { it.longName == lesson[5] }?.id ?: -1 val teacherId = data.teacherList.singleOrNull { it.fullNameLastFirst == (lesson[7]+" "+lesson[6]).fixName() }?.id ?: -1 @@ -75,6 +90,15 @@ class MobidziennikApiTimetable(val data: DataMobidziennik, rows: List) { data.lessonNewList += it } } + + for (day in dataDays) { + val lessonDate = Date.fromValue(day) + data.lessonNewList += Lesson(profileId, lessonDate.value.toLong()).apply { + type = Lesson.TYPE_NO_LESSONS + date = lessonDate + } + } + /*for (lessonStr in rows) { if (lessonStr.isNotEmpty()) { val lesson = lessonStr.split("|") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java index 7877e1f9..d0411da2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java @@ -132,6 +132,13 @@ public class Date implements Comparable { return year * 10000 + month * 100 + day; } + public static Date fromValue(int value) { + int year = value / 10000; + int month = (value-year*10000) / 100; + int day = (value-year*10000-month*100); + return new Date(year, month, day); + } + public String getStringValue() { return Integer.toString(getValue());