@extends('layouts.admin') @section('title', 'Institution Setup Dashboard') @push('scripts') @vite('resources/js/pages/institution-dashboard.js') @endpush @section('content') @php $sessionLabel = $currentSession ? $currentSession->name . ' (' . $currentSession->year_start . '/' . $currentSession->year_end . ')' : config('app.academic_session', now()->year . '/' . (now()->year + 1)); $statusChartData = function (array $data): array { $labels = []; $values = []; foreach (['active', 'inactive', 'archived', 'draft'] as $status) { if (($data[$status] ?? 0) > 0) { $labels[] = ucfirst($status); $values[] = (int) $data[$status]; } } return ['labels' => $labels, 'values' => $values]; }; $campusChart = $statusChartData($charts['campuses_by_status'] ?? []); $programmeChart = $statusChartData($charts['programmes_by_status'] ?? []); $facultyChart = $statusChartData($charts['faculties_by_status'] ?? []); $sessionChart = $statusChartData($charts['sessions_by_status'] ?? []); $intakeChart = $statusChartData($charts['intakes_by_status'] ?? []); $growthLabels = ['Campuses', 'Faculties', 'Programmes']; $growthValues = [ (int) ($charts['growth']['campuses'] ?? 0), (int) ($charts['growth']['faculties'] ?? 0), (int) ($charts['growth']['programmes'] ?? 0), ]; $timelineItems = $recentActivity->map(function ($activity) { $subject = $activity->subject; $subjectLabel = $subject?->name ?? $subject?->code ?? class_basename($activity->subject_type ?? 'Record'); return [ 'time' => $activity->created_at?->diffForHumans() ?? '', 'title' => ucfirst($activity->description ?? $activity->event ?? 'Activity'), 'description' => ($activity->causer?->name ? $activity->causer->name . ' ยท ' : '') . $subjectLabel, ]; })->values()->all(); @endphp

{{ $institution->name ?? 'Institution Setup' }}

Setup overview for academic session {{ $sessionLabel }}.

Edit Profile Add Campus
@include('institution.partials.flash') {{-- Setup KPIs --}}
{{-- Charts row 1 --}}

Setup Growth (6 months)

New records created
Live

Programmes by Status

{{-- Charts row 2 --}}

Campuses by Status

Faculties by Status

Sessions & Intakes

{{-- Quick actions --}} @if(count($quickActions))

Quick Actions

Common institution setup tasks
@foreach($quickActions as $action) {{ $action['label'] }} @endforeach
@endif {{-- Widgets row --}}

Recent Activity

@if(count($timelineItems)) @else @endif

Campus Overview

View all
@foreach($campusChart['labels'] as $i => $label)
{{ $label }}
{{ $campusChart['values'][$i] ?? 0 }} campuses
@endforeach @if(empty($campusChart['labels']))

No campus data yet.

@endif

Programme Overview

View all
@foreach($programmeChart['labels'] as $i => $label)
{{ $label }}
{{ $programmeChart['values'][$i] ?? 0 }} programmes
@endforeach @if(empty($programmeChart['labels']))

No programme data yet.

@endif
{{-- Module summary table --}}
ModuleRecordsManage @foreach([ ['Campuses', $counts['campuses'], 'institution.campuses.index'], ['Faculties', $counts['faculties'], 'institution.faculty.index'], ['Areas of Study', $counts['areas_of_study'], 'institution.area-of-study.index'], ['Programmes', $counts['programmes'], 'institution.programmes.index'], ['Programme Tracks', $counts['programme_tracks'], 'institution.programme-tracks.index'], ['Programme Structures', $counts['programme_structures'], 'institution.programme-structure.index'], ['Academic Paths', $counts['academic_paths'], 'institution.academic-path.index'], ['Academic Sessions', $counts['academic_sessions'], 'institution.sessions.index'], ['Study Plan Periods', $counts['study_plan_periods'], 'institution.study-plan-periods.index'], ['Academic Intakes', $counts['academic_intakes'], 'institution.academic-intake.index'], ] as [$module, $count, $route]) {{ $module }} {{ $count }} Open module @endforeach
@endsection