travelRequest = TravelRequest::with([ 'user', 'workflow', 'journeys', 'costCodes', 'approvals.step', 'approvals.approver', ])->findOrFail($id); $user = auth()->user(); abort_unless( $user->id === $this->travelRequest->user_id || $user->hasAnyRole(['travel_approver', 'administrator']), 403 ); } public function render(): mixed { return view('livewire.travel-request.show'); } } ?>

Travel Request #{{ $travelRequest->id }}

@php $badgeClass = match($travelRequest->status) { \App\Enums\TravelStatus::Draft => 'secondary', \App\Enums\TravelStatus::Pending => 'warning', \App\Enums\TravelStatus::Approved => 'success', \App\Enums\TravelStatus::Rejected => 'danger', }; @endphp {{ $travelRequest->status->value }} @if ($travelRequest->status === \App\Enums\TravelStatus::Pending && auth()->user()->hasAnyRole(['travel_approver', 'administrator'])) Review @endif Back
{{-- Applicant Details --}}
Applicant Details
Name
{{ $travelRequest->user->name }}
Email
{{ $travelRequest->user->email }}
Department
{{ $travelRequest->user->department ?? '—' }}
Submitted
{{ $travelRequest->submitted_at?->format('d M Y H:i') ?? 'Not submitted' }}
Workflow
{{ $travelRequest->workflow?->name ?? '—' }}
{{-- Reason --}}
Reason for Travel

{{ $travelRequest->reason_summary }}

@if ($travelRequest->event_type) Event: {{ $travelRequest->event_type->label() }} @elseif ($travelRequest->general_type) General: {{ $travelRequest->general_type->label() }} @endif
{{-- Journeys --}}
Journeys
@foreach ($travelRequest->journeys as $journey) @endforeach
Origin Destination Date Time Method
{{ $journey->origin }} {{ $journey->destination }} {{ $journey->date->format('d M Y') }} {{ $journey->time ?? '—' }} {{ $journey->method->label() }}
{{-- Additional Details --}}
Additional Details
Accommodation: {{ $travelRequest->needs_accommodation ? 'Required' : 'Not Required' }}
Car Hire: {{ $travelRequest->needs_car_hire ? 'Required' : 'Not Required' }}
Business Days
{{ $travelRequest->business_days }}
Private Days
{{ $travelRequest->private_days }}
@if ($travelRequest->additional_notes)
Notes
{{ $travelRequest->additional_notes }}
@endif
{{-- Approval Timeline --}} @if ($travelRequest->approvals->isNotEmpty())
Approval Timeline
@foreach ($travelRequest->approvals as $approval)
@php $iconClass = match($approval->status) { \App\Enums\ApprovalStatus::Approved => 'text-success', \App\Enums\ApprovalStatus::Rejected => 'text-danger', default => 'text-warning', }; @endphp Step {{ $approval->step->order }}
{{ $approval->step->name }} {{ $approval->status->value }} @if ($approval->approver)
By {{ $approval->approver->name }} on {{ $approval->acted_at?->format('d M Y H:i') }}
@endif @if ($approval->comments)
"{{ $approval->comments }}"
@endif
@endforeach
@endif