@extends('layouts.admin') @section('title', 'Student Admission Dashboard') @push('scripts') @vite('resources/js/pages/admission-dashboard.js') @endpush @section('content') @php $byStatus = $stats['applications_by_status'] ?? []; $statusLabels = []; $statusValues = []; foreach ($byStatus as $status => $count) { $enum = \App\Enums\ApplicationStatus::tryFrom($status); $statusLabels[] = $enum?->label() ?? ucfirst(str_replace('_', ' ', (string) $status)); $statusValues[] = (int) $count; } $funnelOrder = [ \App\Enums\ApplicationStatus::Draft->value, \App\Enums\ApplicationStatus::Submitted->value, \App\Enums\ApplicationStatus::DocumentVerification->value, \App\Enums\ApplicationStatus::AcademicReview->value, \App\Enums\ApplicationStatus::Interview->value, \App\Enums\ApplicationStatus::PendingDecision->value, \App\Enums\ApplicationStatus::Approved->value, \App\Enums\ApplicationStatus::OfferIssued->value, \App\Enums\ApplicationStatus::OfferAccepted->value, \App\Enums\ApplicationStatus::ConvertedToStudent->value, ]; $funnelLabels = []; $funnelValues = []; foreach ($funnelOrder as $status) { $enum = \App\Enums\ApplicationStatus::from($status); $funnelLabels[] = $enum->label(); $funnelValues[] = (int) ($byStatus[$status] ?? 0); } $timelineItems = collect($upcomingInterviews ?? [])->map(function ($interview) { $applicant = $interview->application?->applicant; $name = trim(($applicant?->first_name ?? '').' '.($applicant?->last_name ?? '')); return [ 'time' => $interview->scheduled_at?->diffForHumans() ?? '', 'title' => $interview->venue ?: 'Interview', 'description' => ($name ?: 'Applicant').' ยท '.($interview->application?->application_number ?? ''), ]; })->values()->all(); @endphp
Applications pipeline, reviews, and upcoming interviews.
Reviews logged: {{ $stats['reviews_count'] ?? 0 }}