@@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModel
6
6
import androidx.lifecycle.viewModelScope
7
7
import dagger.hilt.android.lifecycle.HiltViewModel
8
8
import de.motis.prima.data.DataRepository
9
+ import de.motis.prima.data.Ticket
9
10
import de.motis.prima.data.ValidationStatus
10
11
import de.motis.prima.formatTo
11
12
import de.motis.prima.services.ApiService
@@ -48,21 +49,21 @@ class ToursViewModel @Inject constructor(
48
49
val selectedVehicle = repository.selectedVehicle
49
50
.stateIn(viewModelScope, SharingStarted .Eagerly , null )
50
51
51
- val scannedTickets = repository.scannedTickets
52
+ private val scannedTickets = repository.scannedTickets
52
53
53
- fun reportTicketScan ( requestId : Int , ticketCode : String ) {
54
+ private fun retryFailedReport ( ticket : Ticket ) {
54
55
viewModelScope.launch {
55
- var validationStatus = ValidationStatus .OK
56
56
try {
57
- val response = apiService.validateTicket(requestId, ticketCode)
58
- if (! response.isSuccessful) {
59
- validationStatus = ValidationStatus .REJECTED
57
+ val response = apiService.validateTicket(ticket.requestId, ticket.ticketCode)
58
+ if (response.isSuccessful) {
59
+ ticket.validationStatus = ValidationStatus .OK
60
+ repository.updateScannedTickets(ticket)
61
+ } else {
62
+ ticket.validationStatus = ValidationStatus .REJECTED
63
+ repository.updateScannedTickets(ticket)
60
64
}
61
65
} catch (e: Exception ) {
62
- validationStatus = ValidationStatus .FAILED
63
66
Log .d(" error" , " Network Error: ${e.message!! } " )
64
- } finally {
65
- repository.updateScannedTickets(requestId, ticketCode, validationStatus)
66
67
}
67
68
}
68
69
}
@@ -96,10 +97,12 @@ class ToursViewModel @Inject constructor(
96
97
val pickupDate = Date (pickup.scheduledTimeStart)
97
98
98
99
if (pickupDate.formatTo(" yyyy-MM-dd" ) == currentDday) {
99
- Log .d( " test " , " new tour " ) // TODO: notification
100
+ // TODO: notifications
100
101
}
101
102
}
102
103
_tours .value = newTours
104
+ } else {
105
+ Log .d(" debug" , " fetchTours: $response " )
103
106
}
104
107
}
105
108
@@ -124,7 +127,7 @@ class ToursViewModel @Inject constructor(
124
127
val failedReports = scannedTickets.value.entries
125
128
.filter { e -> e.value.validationStatus == ValidationStatus .FAILED }
126
129
for (report in failedReports) {
127
- reportTicketScan (report.value.requestId, report.value.ticketCode )
130
+ retryFailedReport (report.value)
128
131
}
129
132
130
133
delay(5000 ) // Fetch every 5 seconds
0 commit comments