aboutsummaryrefslogtreecommitdiff
path: root/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-01-14 18:25:26 -0600
committerIván Ávalos <avalos@disroot.org>2022-01-14 18:25:26 -0600
commit7c3e13114fd189c49e86b8d6c200ffb3c27bb498 (patch)
tree9024ba5e810b40c22eeb2065e3d22650aa51d54e /shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils
parente10c55888fede23b225dee03044f6953e997c28b (diff)
downloadetbsa-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.kt8
-rw-r--r--shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/utils/ReportDates.kt79
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