aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt83
1 files changed, 44 insertions, 39 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt
index b67dd94..957c6a7 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt
@@ -26,7 +26,9 @@ import mx.trackermap.TrackerMap.android.map.MarkerTransformations
import mx.trackermap.TrackerMap.client.models.EventInformation
import mx.trackermap.TrackerMap.client.models.Position
import mx.trackermap.TrackerMap.client.models.Stop
+import mx.trackermap.TrackerMap.controllers.ReportController
import mx.trackermap.TrackerMap.utils.Formatter
+import mx.trackermap.TrackerMap.utils.ReportDates
import org.koin.androidx.viewmodel.ext.android.viewModel
import java.lang.Exception
import kotlin.math.max
@@ -76,9 +78,9 @@ class UnitReportsFragment : Fragment() {
binding.reportType.setOnPositionChangedListener { position ->
unitReportsViewModel.setReportType(
when (position) {
- 0 -> UnitReportsViewModel.ReportType.POSITIONS
- 1 -> UnitReportsViewModel.ReportType.EVENTS
- else -> UnitReportsViewModel.ReportType.STOPS
+ 0 -> ReportController.ReportType.POSITIONS
+ 1 -> ReportController.ReportType.EVENTS
+ else -> ReportController.ReportType.STOPS
}
)
}
@@ -88,8 +90,8 @@ class UnitReportsFragment : Fragment() {
binding.exportButton.setOnClickListener {
unitReportsViewModel.fetchReportXlsx()
}
- unitReportsViewModel.setReportPeriod(UnitReportsViewModel.ReportPeriod.DAY)
- unitReportsViewModel.setReportType(UnitReportsViewModel.ReportType.POSITIONS)
+ unitReportsViewModel.setReportPeriod(ReportDates.ReportPeriod.TODAY)
+ unitReportsViewModel.setReportType(ReportController.ReportType.POSITIONS)
}
private fun setupObservers() {
@@ -97,19 +99,22 @@ class UnitReportsFragment : Fragment() {
Log.d("UnitReportsFragment", "Report available: $report")
when (report) {
- is UnitReportsViewModel.Report.PositionsReport -> {
+ is ReportController.Report.PositionsReport -> {
display(report.positions)
showMap(true)
}
- is UnitReportsViewModel.Report.EventsReport -> {
+ is ReportController.Report.EventsReport -> {
display(report.events)
showMap(false)
}
- is UnitReportsViewModel.Report.StopsReport -> {
+ is ReportController.Report.StopsReport -> {
display(report.stops)
showMap(true)
}
- is UnitReportsViewModel.Report.LoadingReport -> loading()
+ is ReportController.Report.XlsxReport -> {
+ downloadFile("report.xlsx")
+ }
+ is ReportController.Report.LoadingReport -> loading()
}
}
@@ -121,21 +126,16 @@ class UnitReportsFragment : Fragment() {
binding.periodButton.text = context?.getString(
when (period) {
- UnitReportsViewModel.ReportPeriod.DAY -> R.string.day_period
- UnitReportsViewModel.ReportPeriod.WEEK -> R.string.week_period
- UnitReportsViewModel.ReportPeriod.MONTH -> R.string.month_period
+ ReportDates.ReportPeriod.TODAY -> R.string.period_today
+ ReportDates.ReportPeriod.LAST_24 -> R.string.period_last_24
+ ReportDates.ReportPeriod.YESTERDAY -> R.string.period_yesterday
+ ReportDates.ReportPeriod.THIS_WEEK -> R.string.period_this_week
+ ReportDates.ReportPeriod.LAST_7 -> R.string.period_last_7
+ ReportDates.ReportPeriod.THIS_MONTH -> R.string.period_this_month
+ ReportDates.ReportPeriod.LAST_30 -> R.string.period_last_30
}
)
}
-
- unitReportsViewModel.reportFile.observe(viewLifecycleOwner) {
- downloadFile("report.xlsx")
- }
-
- unitReportsViewModel.geofences.observe(viewLifecycleOwner) { geofences ->
- Log.d("UnitReportsFragment", "Success $geofences")
- reportsMapFragment.displayGeofences(geofences.values.toTypedArray())
- }
}
private fun showPeriodPopUp(view: View) {
@@ -144,9 +144,14 @@ class UnitReportsFragment : Fragment() {
popOver.setOnMenuItemClickListener { item ->
unitReportsViewModel.setReportPeriod(
when (item.itemId) {
- R.id.dayOption -> UnitReportsViewModel.ReportPeriod.DAY
- R.id.weekOption -> UnitReportsViewModel.ReportPeriod.WEEK
- else -> UnitReportsViewModel.ReportPeriod.MONTH
+ R.id.optionToday -> ReportDates.ReportPeriod.TODAY
+ R.id.optionLast24 -> ReportDates.ReportPeriod.LAST_24
+ R.id.optionYesterday -> ReportDates.ReportPeriod.YESTERDAY
+ R.id.optionWeek -> ReportDates.ReportPeriod.THIS_WEEK
+ R.id.optionLast7 -> ReportDates.ReportPeriod.LAST_7
+ R.id.optionMonth -> ReportDates.ReportPeriod.THIS_MONTH
+ R.id.optionLast30 -> ReportDates.ReportPeriod.LAST_30
+ else -> ReportDates.ReportPeriod.TODAY
}
)
true
@@ -221,10 +226,8 @@ class UnitReportsFragment : Fragment() {
else -> R.string.event_unknown
})
}
- event.event.geofenceId?.let {
- val geofence = unitReportsViewModel.getGeofence(it)
- Log.d("UnitReportsFragment", "Getting geofence $geofence")
- geofenceText.text = geofence?.name
+ event.geofence?.let {
+ geofenceText.text = it.name
}
event.position?.let {
addressText.text = it.address
@@ -286,17 +289,19 @@ class UnitReportsFragment : Fragment() {
private val createDocumentResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == Activity.RESULT_OK) {
- it?.data?.data?.also { uri ->
- Log.d("UnitReportsFragment", "Downloading file into ${uri.path}")
- val outputStream = context?.contentResolver?.openOutputStream(uri)
- outputStream?.let {
- try {
- outputStream.write(unitReportsViewModel.reportFile.value)
- outputStream.flush()
- outputStream.close()
- Log.d("UnitReportsFragment", "Wrote file into ${uri.path}")
- } catch (e: Exception) {
- e.printStackTrace()
+ (unitReportsViewModel.report.value as? ReportController.Report.XlsxReport)?.let { report ->
+ it?.data?.data?.also { uri ->
+ Log.d("UnitReportsFragment", "Downloading file into ${uri.path}")
+ val outputStream = context?.contentResolver?.openOutputStream(uri)
+ outputStream?.let {
+ try {
+ outputStream.write(report.data)
+ outputStream.flush()
+ outputStream.close()
+ Log.d("UnitReportsFragment", "Wrote file into ${uri.path}")
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
}
}
}