@use('Illuminate\Support\Facades\Storage') ← {{ __('job.page_list') }} / {{ __('job.page_detail') }}
@can('update', $job) {{ __('job.edit_title') }} @endcan @can('delete', $job) @endcan @if ($job->ended_at) {{ __('job.btn_download_pdf') }} @else {{ __('job.btn_download_pdf') }} @endif
{{-- Delete Confirmation Modal --}} @can('delete', $job)

{{ __('job.delete_title') }}

{{ __('job.delete_warning') }}

@csrf @method('DELETE') @error('confirmation')

{{ $message }}

@enderror
@endcan {{-- Info Section --}}
{{ __('job.detail_customer') }}
{{ $job->customerObject?->customer?->name ?? $job->customer?->name ?? '–' }}
{{ __('job.detail_object') }}
{{ $job->customerObject?->name ?? '–' }} @if($job->customerObject?->street) — {{ $job->customerObject->street }}, {{ $job->customerObject->zip }} {{ $job->customerObject->city }} @endif
{{ __('job.detail_driver') }}
{{ $job->user->name }}
{{ __('job.detail_type') }}
{{ $job->type->label() }} @if ($job->is_manual) {{ __('job.detail_manual_badge') }} @endif
{{ __('job.detail_vehicle') }}
{{ $job->vehicle?->displayLabel() ?? __('job.detail_vehicle_none') }}
{{ __('job.detail_started_at') }}
{{ $job->localStartedAt()->format('d.m.Y H:i') }}
{{ __('job.detail_ended_at') }}
@if ($job->ended_at) {{ $job->localEndedAt()->format('d.m.Y H:i') }} ({{ $job->durationFormatted() }}) @if ($job->isInGracePeriod()) {{ __('job.lock_grace_remaining', ['hours' => round(now()->diffInHours($job->graceDeadline()))]) }} @elseif ($job->isLocked()) {{ __('job.lock_since', ['date' => $job->graceDeadline()->setTimezone(config('app.display_timezone'))->format('d.m.Y H:i')]) }} @endif @else {{ __('job.status_active') }} @endif
{{ __('job.detail_notes') }}
{{ $job->notes ?? __('job.detail_notes_empty') }}
{{-- Weather Section --}}

{{ __('job.detail_weather') }}

@if ($job->weatherSnapshots->isNotEmpty())
@foreach ($job->weatherSnapshots as $snapshot) @if ($snapshot->fetched_at) @else @endif @endforeach
{{ __('weather.col_moment') }} {{ __('weather.col_provider') }} {{ __('weather.col_temperature') }} {{ __('weather.col_precipitation') }} {{ __('weather.col_snow_depth') }} {{ __('weather.col_wind_speed') }} {{ __('weather.col_humidity') }} {{ __('weather.col_weather_code') }} {{ __('weather.col_fetched') }}
{{ $snapshot->moment->label() }} {{ $snapshot->providerLabel() }} {{ $snapshot->temperature }} °C {{ $snapshot->precipitation }} mm {{ $snapshot->snow_depth }} cm {{ $snapshot->wind_speed !== null ? $snapshot->wind_speed . ' km/h' : '–' }} {{ $snapshot->humidity !== null ? $snapshot->humidity . ' %' : '–' }} {{ $snapshot->weather_code }} {{ $snapshot->fetched_at->setTimezone(config('app.display_timezone'))->format('d.m.Y H:i') }}{{ __('job.weather_not_fetched') }}
@csrf
@endif
{{-- Photos Section --}}

{{ __('job.detail_photos') }}

@if ($job->jobPhotos->isNotEmpty())
@foreach ($job->jobPhotos as $photo)
{{ $photo->caption ?? __('job.detail_photo_alt') }} @if ($photo->annotated_path) {{ __('job.detail_photo_annotated') }} @endif
@endforeach
@else

{{ __('job.detail_photos_empty') }}

@endif
{{-- GPS Map Section --}}

{{ __('job.detail_gps_track') }}

@if ($job->gpsPoints->isNotEmpty())
@else

{{ $job->is_manual ? __('job.detail_gps_empty_manual') : __('job.detail_gps_empty_no_signal') }}

@endif
{{-- Audit Trail Section --}} @can('viewAudit', $job)

{{ __('job.audit_title') }}

@if ($job->audits->isNotEmpty())
@foreach ($job->audits->sortByDesc('created_at') as $audit) @endforeach
{{ __('job.audit_at') }} {{ __('job.audit_by') }} {{ __('job.audit_action_label') }} {{ __('job.audit_old_value') }} {{ __('job.audit_new_value') }}
{{ $audit->created_at->setTimezone(config('app.display_timezone'))->format('d.m.Y H:i:s') }} {{ $audit->user?->name ?? '—' }} {{ __('job.audit_action_' . $audit->action) }} @if ($audit->old_values) @foreach ($audit->old_values as $field => $value)
{{ __('job.audit_field_' . $field) }}: {{ $value ?? '—' }}
@endforeach @else — @endif
@if ($audit->new_values) @foreach ($audit->new_values as $field => $value)
{{ __('job.audit_field_' . $field) }}: {{ $value ?? '—' }}
@endforeach @else — @endif
@else

{{ __('job.audit_no_entries') }}

@endif
@endcan