diff --git a/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart b/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart index 4c9777de..28bc205a 100644 --- a/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart +++ b/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart @@ -194,6 +194,10 @@ class ShiftsRepositoryImpl implements ShiftsRepositoryInterface { final DateTime? createdDt = _toDateTime(app.createdAt); // Override status to reflect the application state (e.g., CHECKED_OUT, ACCEPTED) + final bool hasCheckIn = app.checkInTime != null; + final bool hasCheckOut = app.checkOutTime != null; + final String mappedStatus = + hasCheckOut ? 'completed' : hasCheckIn ? 'checked_in' : _mapStatus(status); shifts.add( Shift( id: app.shift.id, @@ -208,7 +212,7 @@ class ShiftsRepositoryImpl implements ShiftsRepositoryInterface { startTime: startDt != null ? DateFormat('HH:mm').format(startDt) : '', endTime: endDt != null ? DateFormat('HH:mm').format(endDt) : '', createdDate: createdDt?.toIso8601String() ?? '', - status: _mapStatus(status), + status: mappedStatus, description: app.shift.description, durationDays: app.shift.durationDays, requiredSlots: app.shiftRole.count, diff --git a/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/my_shift_card.dart b/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/my_shift_card.dart index 7175e004..e1bba099 100644 --- a/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/my_shift_card.dart +++ b/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/my_shift_card.dart @@ -90,6 +90,10 @@ class _MyShiftCardState extends State { statusText = t.staff_shifts.status.confirmed; statusColor = UiColors.textLink; statusBg = UiColors.primary; + } else if (status == 'checked_in') { + statusText = 'Checked in'; + statusColor = UiColors.textSuccess; + statusBg = UiColors.iconSuccess; } else if (status == 'pending' || status == 'open') { statusText = t.staff_shifts.status.act_now; statusColor = UiColors.destructive;