Dodaj kartę przypomnienia o tachografie
This commit is contained in:
@@ -47,6 +47,7 @@ data class BootstrapResponse(
|
||||
val routes: RoutesBucketDto,
|
||||
val driverAppSettings: DriverAppSettingsDto?,
|
||||
val dispatchSheetReminder: DispatchSheetReminderDto? = null,
|
||||
val tachographReminder: TachographReminderDto? = null,
|
||||
val notificationPreferences: NotificationPreferencesDto? = null,
|
||||
val realtime: RealtimeConfigDto? = null,
|
||||
val syncState: SyncStateResponse? = null,
|
||||
@@ -80,6 +81,7 @@ data class DriverAppSettingsDto(
|
||||
val dispatchSheetRemindersEnabled: Boolean? = null,
|
||||
val dispatchSheetOnFridays: Boolean? = null,
|
||||
val dispatchSheetOnLastWorkingDay: Boolean? = null,
|
||||
val tachographRemindersEnabled: Boolean? = null,
|
||||
val leaveRequests: LeaveRequestsConfigDto? = null,
|
||||
)
|
||||
|
||||
@@ -99,6 +101,13 @@ data class DispatchSheetReminderDto(
|
||||
val canUpload: Boolean = false,
|
||||
)
|
||||
|
||||
data class TachographReminderDto(
|
||||
val enabled: Boolean = false,
|
||||
val visible: Boolean = false,
|
||||
val title: String? = null,
|
||||
val message: String? = null,
|
||||
)
|
||||
|
||||
data class DispatchSheetPhotoDto(
|
||||
val id: String,
|
||||
val driverId: String,
|
||||
|
||||
@@ -74,6 +74,7 @@ import androidx.compose.material.icons.outlined.Person
|
||||
import androidx.compose.material.icons.outlined.Phone
|
||||
import androidx.compose.material.icons.outlined.Refresh
|
||||
import androidx.compose.material.icons.outlined.SystemUpdate
|
||||
import androidx.compose.material.icons.outlined.Speed
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
@@ -164,6 +165,7 @@ import pl.firmatpp.kierowca.data.model.DriverLeaveRequestDto
|
||||
import pl.firmatpp.kierowca.data.model.DriverRouteDto
|
||||
import pl.firmatpp.kierowca.data.model.NavigationPointDto
|
||||
import pl.firmatpp.kierowca.data.model.RoutePhotoDto
|
||||
import pl.firmatpp.kierowca.data.model.TachographReminderDto
|
||||
import pl.firmatpp.kierowca.data.model.driverLifecycleStatus
|
||||
import pl.firmatpp.kierowca.data.upload.DispatchSheetUploadEntity
|
||||
import pl.firmatpp.kierowca.data.upload.PhotoUploadEntity
|
||||
@@ -1277,6 +1279,11 @@ private fun RoutesScreen(
|
||||
onDate = onDate,
|
||||
)
|
||||
}
|
||||
if (shouldShowTachographReminderCard(state.tachographReminder)) {
|
||||
item {
|
||||
TachographReminderCard(state.tachographReminder)
|
||||
}
|
||||
}
|
||||
if (shouldShowDispatchSheetReminderCard(state.dispatchSheetReminder)) {
|
||||
item {
|
||||
DispatchSheetReminderCard(
|
||||
@@ -2251,6 +2258,51 @@ private fun DispatchSheetReminderCard(
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun TachographReminderCard(reminder: TachographReminderDto?) {
|
||||
if (!shouldShowTachographReminderCard(reminder)) return
|
||||
|
||||
Card(
|
||||
colors = CardDefaults.cardColors(containerColor = TppTheme.colors.warningContainer),
|
||||
border = BorderStroke(1.dp, TppTheme.colors.warningOutline),
|
||||
shape = MaterialTheme.shapes.medium,
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
) {
|
||||
Row(
|
||||
Modifier.fillMaxWidth().padding(18.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(14.dp),
|
||||
verticalAlignment = Alignment.Top,
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(44.dp)
|
||||
.background(Color.White.copy(alpha = 0.72f), RoundedCornerShape(12.dp)),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
Icon(
|
||||
Icons.Outlined.Speed,
|
||||
contentDescription = null,
|
||||
tint = Color(0xFF7A5200),
|
||||
modifier = Modifier.size(27.dp),
|
||||
)
|
||||
}
|
||||
Column(Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(5.dp)) {
|
||||
Text(
|
||||
reminder?.title.orEmpty(),
|
||||
color = TppTheme.colors.ink,
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Bold,
|
||||
)
|
||||
Text(
|
||||
reminder?.message.orEmpty(),
|
||||
color = Color(0xFF5F4200),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun OperationalQueueBanner(state: DriverUiState, onPhotoQueue: () -> Unit) {
|
||||
val count = state.pendingOperationalItems
|
||||
|
||||
@@ -14,6 +14,7 @@ import kotlin.math.abs
|
||||
import pl.firmatpp.kierowca.data.model.DriverRouteDto
|
||||
import pl.firmatpp.kierowca.data.model.DispatchSheetReminderDto
|
||||
import pl.firmatpp.kierowca.data.model.RoutePhotoDto
|
||||
import pl.firmatpp.kierowca.data.model.TachographReminderDto
|
||||
import pl.firmatpp.kierowca.data.model.driverLifecycleStatus
|
||||
import pl.firmatpp.kierowca.data.upload.PhotoUploadEntity
|
||||
import pl.firmatpp.kierowca.data.upload.PhotoUploadStatus
|
||||
@@ -671,6 +672,12 @@ fun canLaunchCameraWithLocationPolicy(requirePreciseLocation: Boolean, hasFineLo
|
||||
fun shouldShowDispatchSheetReminderCard(reminder: DispatchSheetReminderDto?): Boolean =
|
||||
reminder?.dueToday == true && reminder.status in setOf("missing", "uploaded")
|
||||
|
||||
fun shouldShowTachographReminderCard(reminder: TachographReminderDto?): Boolean =
|
||||
reminder?.enabled == true &&
|
||||
reminder.visible &&
|
||||
!reminder.title.isNullOrBlank() &&
|
||||
!reminder.message.isNullOrBlank()
|
||||
|
||||
fun dispatchSheetPrimaryActionLabel(reminder: DispatchSheetReminderDto?, hasQueuedUpload: Boolean): String =
|
||||
when {
|
||||
hasQueuedUpload -> "Wysyłam zdjęcie..."
|
||||
|
||||
@@ -33,6 +33,7 @@ import pl.firmatpp.kierowca.data.model.DriverLeaveCalendarEntryDto
|
||||
import pl.firmatpp.kierowca.data.model.DriverLeaveRequestDto
|
||||
import pl.firmatpp.kierowca.data.model.DriverRouteDto
|
||||
import pl.firmatpp.kierowca.data.model.RoutePhotoDto
|
||||
import pl.firmatpp.kierowca.data.model.TachographReminderDto
|
||||
import pl.firmatpp.kierowca.data.model.driverLifecycleStatus
|
||||
import pl.firmatpp.kierowca.data.upload.DispatchSheetUploadEntity
|
||||
import pl.firmatpp.kierowca.data.upload.DispatchSheetUploadOutbox
|
||||
@@ -102,6 +103,7 @@ data class DriverUiState(
|
||||
val photoUploads: List<PhotoUploadEntity> = emptyList(),
|
||||
val queuedPhotoUploads: List<PhotoUploadEntity> = emptyList(),
|
||||
val dispatchSheetReminder: DispatchSheetReminderDto? = null,
|
||||
val tachographReminder: TachographReminderDto? = null,
|
||||
val appUpdate: AppUpdateDto? = null,
|
||||
val dispatchSheetUploads: List<DispatchSheetUploadEntity> = emptyList(),
|
||||
val leaveRequestsConfig: LeaveRequestsConfig? = null,
|
||||
@@ -509,6 +511,7 @@ class DriverViewModel(application: Application) : AndroidViewModel(application)
|
||||
driver = response.session.driver,
|
||||
routes = response.routes.today,
|
||||
dispatchSheetReminder = response.dispatchSheetReminder,
|
||||
tachographReminder = response.tachographReminder,
|
||||
appUpdate = response.appUpdate ?: it.appUpdate,
|
||||
selectedDate = settings?.selectedDate ?: date ?: it.selectedDate,
|
||||
minRouteDate = settings?.minDate ?: it.minRouteDate,
|
||||
|
||||
Reference in New Issue
Block a user