diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-01-14 18:25:26 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-01-14 18:25:26 -0600 |
commit | 7c3e13114fd189c49e86b8d6c200ffb3c27bb498 (patch) | |
tree | 9024ba5e810b40c22eeb2065e3d22650aa51d54e /shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils | |
parent | e10c55888fede23b225dee03044f6953e997c28b (diff) | |
download | etbsa-trackermap-mobile-7c3e13114fd189c49e86b8d6c200ffb3c27bb498.tar.gz etbsa-trackermap-mobile-7c3e13114fd189c49e86b8d6c200ffb3c27bb498.tar.bz2 etbsa-trackermap-mobile-7c3e13114fd189c49e86b8d6c200ffb3c27bb498.zip |
Refactored reports code into ReportController.kt and added extra report periods
Diffstat (limited to 'shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils')
-rw-r--r-- | shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/Formatter.kt | 8 | ||||
-rw-r--r-- | shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/ReportDates.kt | 79 |
2 files changed, 84 insertions, 3 deletions
diff --git a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/Formatter.kt b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/Formatter.kt index af4e14d..878418e 100644 --- a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/Formatter.kt +++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/Formatter.kt @@ -5,9 +5,11 @@ import kotlin.math.round class Formatter { companion object { - fun formatDate(date: String): String { - return date.substring(0 until date.indexOf('+')) - .toLocalDateTime().toString().replace('T', ' ') + fun formatDate(str: String): String { + val timezone = TimeZone.currentSystemDefault() + val date = str.toInstant().toLocalDateTime(timezone).toString() + return date + .replace('T', ' ').trim('Z') } fun formatSpeed(speed: Double, unit: SpeedUnit): String { diff --git a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/ReportDates.kt b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/ReportDates.kt new file mode 100644 index 0000000..360cce8 --- /dev/null +++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/ReportDates.kt @@ -0,0 +1,79 @@ +package mx.trackermap.TrackerMap.utils + +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.datetime.* + +@DelicateCoroutinesApi +class ReportDates { + enum class ReportPeriod { + TODAY, LAST_24, YESTERDAY, THIS_WEEK, LAST_7, THIS_MONTH, LAST_30 + } + + companion object { + private fun formatDateTime(dateTime: LocalDateTime, timezone: TimeZone) = + dateTime.toInstant(timezone).toString() + + fun getDates(period: ReportPeriod): Pair<String, String> { + val timezone = TimeZone.currentSystemDefault() + val clock = Clock.System + val instant = clock.now() + val dateTime = instant.toLocalDateTime(timezone) + val date = dateTime.date + + var currentDate: LocalDateTime? = null + var previousDate: LocalDateTime? = null + when (period) { + ReportPeriod.TODAY -> { + previousDate = date.atTime(0, 0) + currentDate = dateTime + } + ReportPeriod.LAST_24 -> { + previousDate = instant + .minus(1, DateTimeUnit.DAY, timezone) + .toLocalDateTime(timezone) + currentDate = dateTime + } + ReportPeriod.YESTERDAY -> { + val yesterday = instant + .minus(1, DateTimeUnit.DAY, timezone) + .toLocalDateTime(timezone).date + previousDate = yesterday.atTime(0, 0) + currentDate = yesterday.atTime(23, 59) + } + ReportPeriod.THIS_WEEK -> { + previousDate = instant + .minus(date.dayOfWeek.isoDayNumber - 1, DateTimeUnit.DAY, timezone) + .toLocalDateTime(timezone).date + .atTime(0, 0) + currentDate = dateTime + } + ReportPeriod.LAST_7 -> { + previousDate = instant + .minus(1, DateTimeUnit.WEEK, timezone) + .toLocalDateTime(timezone).date + .atTime(0, 0) + currentDate = dateTime + } + ReportPeriod.THIS_MONTH -> { + previousDate = instant + .minus(date.dayOfMonth - 1, DateTimeUnit.DAY, timezone) + .toLocalDateTime(timezone).date + .atTime(0, 0) + currentDate = dateTime + } + ReportPeriod.LAST_30 -> { + previousDate = instant + .minus(1, DateTimeUnit.MONTH, timezone) + .toLocalDateTime(timezone).date + .atTime(0, 0) + currentDate = dateTime + } + } + + return Pair( + formatDateTime(currentDate, timezone), + formatDateTime(previousDate, timezone) + ) + } + } +}
\ No newline at end of file |