{{-- resources/views/damages/show.blade.php --}} @php use Illuminate\Support\Facades\URL; /** @var \App\Models\Damage $damage */ $vehicle = app(\App\Support\VehicleContext::class)->current(); $title = ($vehicle?->call_sign ?? 'RTW') . ' – Schaden'; $pageTitle = 'Schaden'; $pageSubtitle = $vehicle ? trim(($vehicle->call_sign ?? '') . ' • ' . ($vehicle->license_plate ?? '') . ' • ' . $damage->title) : $damage->title; $statusBadge = match ((int) $damage->status) { \App\Models\Damage::STATUS_OPEN => ['Offen', 'bg-red-50 text-red-700 ring-red-200'], \App\Models\Damage::STATUS_IN_PROGRESS => ['In Bearbeitung', 'bg-yellow-50 text-yellow-800 ring-yellow-200'], \App\Models\Damage::STATUS_RESOLVED => ['Erledigt', 'bg-gray-100 text-gray-700 ring-gray-200'], default => ['Status', 'bg-gray-100 text-gray-700 ring-gray-200'], }; $urgencyBadge = match ((int) ($damage->urgency ?? \App\Models\Damage::URGENCY_MEDIUM)) { \App\Models\Damage::URGENCY_CRITICAL => ['Kritisch', 'bg-red-50 text-red-700 ring-red-200'], \App\Models\Damage::URGENCY_MEDIUM => ['Mittel', 'bg-yellow-50 text-yellow-800 ring-yellow-200'], \App\Models\Damage::URGENCY_LOW => ['Gering', 'bg-gray-100 text-gray-700 ring-gray-200'], default => ['—', 'bg-gray-100 text-gray-700 ring-gray-200'], }; $operationalBadge = $damage->is_operational ?? true ? ['Einsatzrelevant', 'bg-gray-100 text-gray-700 ring-gray-200'] : ['Nicht einsatzrelevant', 'bg-gray-100 text-gray-700 ring-gray-200']; $reportedAt = $damage->reported_at ?? $damage->created_at; @endphp
@if (session('status'))
{{ session('status') }}
@endif
{{ $statusBadge[0] }} {{ $urgencyBadge[0] }} {{ $operationalBadge[0] }} {{ $damage->damage_type }}

{{ $damage->title }}

Gemeldet am {{ $reportedAt?->format('d.m.Y H:i') }} durch {{ $damage->reporter?->name ?? 'System' }} @if ($damage->occurred_at) • Ereignis: {{ $damage->occurred_at->format('d.m.Y H:i') }} @endif

Beschreibung
{{ $damage->description ?: '—' }}
@can('update', $damage) Bearbeiten @endcan

Maßnahmen

@can('create', [\App\Models\DamageMeasure::class, $damage]) @endcan
@can('create', [\App\Models\DamageMeasure::class, $damage]) @endcan
@forelse($damage->measures as $m)
{{ $m->body }}
Von: {{ $m->creator?->name ?? 'System' }} • {{ $m->created_at?->format('d.m.Y H:i') }}
@if ($m->completed_at) Erledigt @else Offen @endif @can('update', $m) @if (!$m->completed_at)
@csrf @method('PATCH')
@endif @endcan @can('delete', $m)
@csrf @method('DELETE')
@endcan
@empty
Keine Maßnahmen vorhanden.
@endforelse

Anhänge

@can('create', \App\Models\Attachment::class)
@csrf {{-- Right: actions --}}
{{-- Left: selection info --}}
Dateien
@error('files')
{{ $message }}
@enderror @error('files.*')
{{ $message }}
@enderror @endcan
@forelse($damage->attachments as $a) @php $openUrl = URL::signedRoute('attachments.download', ['attachment' => $a->id]); $dlUrl = URL::signedRoute('attachments.download', [ 'attachment' => $a->id, 'download' => 1, ]); $thumbUrl = !empty($a->thumb_path) ? URL::signedRoute('attachments.thumb', ['attachment' => $a->id]) : null; $isImage = str_starts_with((string) $a->mime_type, 'image/'); $isPdf = (string) $a->mime_type === 'application/pdf'; $uploadedAt = $a->uploaded_at ?? $a->created_at; @endphp
{{-- Preview --}}
@if ($thumbUrl && $isImage)
@elseif ($isPdf)
PDF Dokument
@else
FILE Anhang
@endif
{{-- Content --}}
{{ $a->original_name }}
{{ $uploadedAt?->format('d.m.Y H:i') }} • {{ $a->uploader?->name ?? 'System' }} @if ($isImage) • Bild @elseif ($isPdf) • PDF @endif
{{-- Quick open (subtle) --}} Öffnen
{{-- Actions --}}
Download @can('delete', $a)
@csrf @method('DELETE')
@endcan
@empty
Keine Anhänge vorhanden.
@endforelse
@hasanyrole('Chef|KFZ Beauftragter')
Änderungen an Schaden/Maßnahmen/Anhängen werden im Audit-Log protokolliert.
@endhasanyrole