@php $kpis = $ageing['kpis'] ?? []; $register = $ageing['exception_register'] ?? []; $modal = $ageing['modal'] ?? ['alarm' => 'red', 'rows' => [], 'total' => 0]; $alarmRules = $ageing['alarm_rules'] ?? []; $matrixRows = $ageing['stage_bottleneck_matrix'] ?? []; $total = (int) ($register['total'] ?? 0); $perPage = (int) ($register['per_page'] ?? 5); $currentPage = (int) ($register['current_page'] ?? 1); $lastPage = (int) ($register['last_page'] ?? 1); $from = (int) ($register['from'] ?? 0); $to = (int) ($register['to'] ?? 0); $baseQuery = request()->except('page', 'ajax', 'per_page'); $pageUrl = fn(int $p) => url()->current() . '?' . http_build_query(array_merge($baseQuery, ['page' => $p])); @endphp @if(!empty($pageMessages ?? []))
{{ implode(' ', $pageMessages) }}
@endif
@if(!empty($ageing['lazy_stage_summary'] ?? false) && empty($matrixRows))

Stage Bottleneck Matrix

Loading dedicated stage cache...
Stage bottleneck summary is loading separately for the pending page.

Stage Red Alert Share

@else @include('theme.sphf.pages.partials.stage-bottlenecks-summary', ['ageing' => $ageing]) @endif
Beneficiary Drill-down: Current Stage Delays Click Row
@forelse(($register['rows'] ?? []) as $row) @php $alarmClass = match (strtolower((string) ($row['alarm_level'] ?? 'green'))) { 'red' => 'is-red', 'orange' => 'is-orange', 'yellow' => 'is-yellow', default => 'is-green', }; $alarmLabel = ucfirst((string) ($row['alarm_level'] ?? 'Green')); @endphp @empty @endforelse
BENEFICIARY CNIC IP DISTRICT IFI Stage Transition Pending At Elapsed Days Status Owner Level
{{ $row['beneficiary_name'] }} {{ $row['beneficiary_cnic'] }} {{ $row['ip'] }} {{ $row['district'] }} {{ $row['ifi'] ?? '-' }} {{ $row['stage_transition'] ?? '-' }} {{ $row['pending_stage'] ?? ($row['stage'] ?? 'N/A') }} {{ (int) $row['ageing_days'] }} {{ $alarmLabel }} {{ $row['owner_level'] ?? 'Normal' }}
No exception rows found for selected filters.
@if($lastPage > 1) @elseif($total > 0) @endif