@php $isApproved = ($decision === 'approved'); $title = $isApproved ? 'Your visit has been approved' : 'Your visit has been rejected'; $badgeColor = $isApproved ? '#198754' : '#dc3545'; $badgeText = strtoupper($decision); $visitId = $visit['id'] ?? null; $hasTopReason = (!$isApproved && !empty($reason)); @endphp {{ $title }}

{{ $title }} @if($visitId)  • Visit #{{ $visitId }} @endif

Hi {{ $visitor_name ?? 'there' }},

Your visit request has been {{ $badgeText }} .

{{-- 🔴 Top-level reject reason (if any) --}} @if($hasTopReason)
Reason for rejection:
{{ $reason }}
@endif @if(!empty($visit)) @endif @if(!empty($host_name) || !empty($host_email)) @endif
Visitor {{ $visitor_name ?? 'Visitor' }}
Email {{ $visitor_email ?? 'N/A' }}
Company {{ $visitor_company ?? 'N/A' }}
Purpose {{ $visit['purpose'] ?? 'N/A' }}
Location {{ $visit['location'] ?? 'N/A' }}
Permit / Order @if(!empty($visit['permit_no'])) Permit: {{ $visit['permit_no'] }} @endif @if(!empty($visit['permit_no']) && !empty($visit['order_no']))
@endif @if(!empty($visit['order_no'])) Order: {{ $visit['order_no'] }} @endif @if(empty($visit['permit_no']) && empty($visit['order_no'])) N/A @endif
Scheduled @php // $visit['scheduled_at'] / ['scheduled_to'] may be Carbon or string $schedFrom = $visit['scheduled_at'] ?? null; $schedTo = $visit['scheduled_to'] ?? null; $fmtFrom = $schedFrom ? (\Carbon\Carbon::parse($schedFrom)->format('Y-m-d H:i')) : 'N/A'; $fmtTo = $schedTo ? (\Carbon\Carbon::parse($schedTo)->format('Y-m-d H:i')) : 'N/A'; @endphp @if($schedFrom || $schedTo) {{ $fmtFrom }}  –  {{ $fmtTo }} @else Not specified @endif
Host {{ $host_name ?? 'N/A' }}
{{ $host_email ?? '' }}
Decision time @if(!empty($decided_at)) {{ \Carbon\Carbon::parse($decided_at)->addHours(8)->format('Y-m-d H:i') }} @else N/A @endif
@if(!empty($steps) && is_array($steps))

Approval flow

@foreach($steps as $s) @php $stApproved = isset($s['status']) && $s['status'] === 'approved'; $stRejected = isset($s['status']) && $s['status'] === 'rejected'; $stLabel = $s['status'] ?? 'pending'; $stColor = $stApproved ? '#198754' : ($stRejected ? '#dc3545' : '#ffc107'); $stepReason = $s['reason'] ?? null; $actedAt = isset($s['acted_at']) ? \Carbon\Carbon::parse($s['acted_at'])->format('Y-m-d H:i') : '—'; @endphp @endforeach
Level Status Reason
{{ $s['label'] ?? (isset($s['level']) ? 'Level '.$s['level'] : '?') }} {{ strtoupper($stLabel) }} @if(!empty($stepReason)) {{ $stepReason }} @else — @endif
@endif

If you have any questions, please contact your host or the security team.

This is an automated message from the SmartPass system.