{{-- Recursive person tree node --}} @php $reports = $allStaff->where('manager_id', $person->id); $isLead = $reports->count() > 0; @endphp
{{-- Leader Card (larger if has reports) --}} @if($isLead)
{{ strtoupper(substr($person->name, 0, 1)) }}

{{ $person->name }}

LEAD

{{ $person->role ?? '-' }}

{{ $person->currency ?? 'PKR' }} {{ number_format($person->salary) }}

{{ $reports->count() }} reports

@else @include('dashboard.org-chart._person-card', ['person' => $person, 'color' => $color]) @endif {{-- Reports --}} @if($isLead) {{-- Connector line --}}
{{-- Check if any reports also have sub-reports --}} @php $reportsWithSubs = $reports->filter(fn($r) => $allStaff->where('manager_id', $r->id)->count() > 0); $reportsWithoutSubs = $reports->filter(fn($r) => $allStaff->where('manager_id', $r->id)->count() === 0); @endphp {{-- Sub-leaders (recursive) --}} @foreach($reportsWithSubs as $subLeader) @if($level < 3) @include('dashboard.org-chart._person-tree', ['person' => $subLeader, 'allStaff' => $allStaff, 'color' => $color, 'level' => $level + 1]) @endif @endforeach {{-- Leaf reports (grid) --}} @if($reportsWithoutSubs->count() > 0)
@foreach($reportsWithoutSubs as $report) @include('dashboard.org-chart._person-card', ['person' => $report, 'color' => $color]) @endforeach
@endif @endif