@extends('layout.layout') @section('content') @php $quickParams = array_filter([ 'admin_id' => $filters['admin_id'] ?? null, 'target_rate' => $targetRate, ], fn($value) => !is_null($value) && $value !== ''); $tabItems = [ ['key' => 'overview', 'label' => 'Overview'], ['key' => 'expectation', 'label' => 'Expectation'], ['key' => 'student-count', 'label' => 'Student Count'], ['key' => 'revenue', 'label' => 'Revenue'], ['key' => 'wasted-hours', 'label' => 'Wasted Hours'], ['key' => 'activities', 'label' => 'Activities'], ['key' => 'issues', 'label' => 'Issues'], ]; @endphp
Retention Control Center
Retention Reports Dashboard

{{ $fromDate->format('M d, Y') }} - {{ $toDate->format('M d, Y') }} | {{ $selectedAdmin ? ($selectedAdmin->full_name ?: trim(($selectedAdmin->first_name ?? '') . ' ' . ($selectedAdmin->last_name ?? ''))) : 'All retention admins' }}

@if ($selectedAdminId && auth()->user()->staff?->jobTitle?->slug === 'admin') @else @endif
@foreach ($tabItems as $item) @endforeach
@foreach ($overviewCards as $card)
{{ $card['label'] }}
{{ $card['value'] }}
@endforeach
@foreach ($overviewHighlights as $highlight)
{{ $highlight['label'] }}
{{ $highlight['value'] }}
@endforeach
Retention Trend
Overview
@foreach ($snapshotItems as $item)
{{ $item['label'] }} {{ $item['value'] }}
@endforeach
Expectation Summary
Expectation KPIs
@if ($selectedAdminId) @endif
@foreach ($sections['expectation']['cards'] as $item)
{{ $item['label'] }}
{{ $item['value'] }}
@endforeach
Progress Against Target {{ $sections['expectation']['progress'] }}%
Student Count Split
Student Count Details
@foreach ($sections['student_count']['cards'] as $item) @endforeach
Booking Details
@foreach ($studentBookingDetails as $detailKey => $detailGroup)
{{ $detailGroup['label'] }}
{{ number_format($detailGroup['students_count']) }} unique students | {{ number_format($detailGroup['bookings_count']) }} bookings
@forelse ($detailGroup['items'] as $category) @php $categoryItemId = $detailKey . '-category-' . $loop->index; $categoryHeadingId = 'heading-' . $categoryItemId; $categoryCollapseId = 'collapse-' . $categoryItemId; @endphp

@foreach ($category['tracks'] as $track) @php $trackItemId = $categoryItemId . '-track-' . $loop->index; $trackHeadingId = 'heading-' . $trackItemId; $trackCollapseId = 'collapse-' . $trackItemId; @endphp

@foreach ($track['levels'] as $level) @php $levelItemId = $trackItemId . '-level-' . $loop->index; $levelHeadingId = 'heading-' . $levelItemId; $levelCollapseId = 'collapse-' . $levelItemId; @endphp

@foreach ($level['students'] as $studentBooking)
{{ $studentBooking['student_name'] }}
Student ID: #{{ $studentBooking['student_id'] }}
{{ $studentBooking['course_name'] }} {{ $studentBooking['track_type'] }}
Teacher: {{ $studentBooking['teacher_name'] }}
Booking dates: {{ $studentBooking['start_date'] }} - {{ $studentBooking['end_date'] }}
@endforeach
@endforeach
@endforeach
@empty
{{ $detailGroup['empty_state'] }}
@endforelse
@endforeach
Revenue Trend
Revenue KPIs
@foreach ($sections['revenue']['cards'] as $item)
{{ $item['label'] }}
{{ $item['value'] }}
@endforeach
Wasted Hours Breakdown
Hours KPIs
@foreach ($sections['wasted_hours']['cards'] as $item)
{{ $item['label'] }}
{{ $item['value'] }}
@endforeach
Recovery Coverage {{ $sections['wasted_hours']['progress'] }}%
Activities Count
Activity Details
@foreach ($sections['activities']['items'] as $item)
{{ $item['label'] }}
{{ $item['count'] }}
{{ number_format($item['students']) }} students | {{ $item['hours'] }}h utilized hours
@endforeach
Issue Breakdown
Issue Status Snapshot
Total Issues
{{ $sections['issues']['total'] }}
Pending Issues
{{ $sections['issues']['pending'] }}
Resolved Issues
{{ $sections['issues']['resolved'] }}
Peak Day
{{ $issuePatterns['peak_day'] }}
Peak Hour
{{ $issuePatterns['peak_hour'] }}
Issues by Hour
Top Logged Issues
@forelse($sections['issues']['items'] as $item)
{{ $item['label'] }} {{ $item['count'] }}
@empty
No issues logged in this range.
@endforelse
@push('scripts') @endpush @endsection