@extends('admin.layout.app') @section('body') @php $n = fn($v) => is_null($v) ? 'N/A' : number_format($v); $students = $stats['students'] ?? 0; $teachers = $stats['teachers'] ?? 0; $courses = $stats['courses'] ?? 0; $enroll = $stats['enrollments'] ?? 0; $user = auth()->user(); $canOpen = fn($permission) => $user?->hasRole('Super Admin') || $user?->can($permission); $moduleVisible = fn($moduleKey) => collect((array) $moduleKey)->every(fn($key) => \App\Models\Finance\ModuleSetting::allows($key, $user)); $dashboardSectionVisible = fn($key) => \App\Support\VisibilitySettings::isDashboardSectionVisible($key); $shortcutGroups = [ [ 'label' => 'Add Student', 'icon' => 'fa-user-plus', 'route' => 'students.create', 'permission' => 'students.create', 'module' => 'student_management', ], [ 'label' => 'New Application', 'icon' => 'fa-file-circle-plus', 'route' => 'admin.admissions-lifecycle.index', 'permission' => 'admin.admissions-lifecycle.index', 'module' => 'admissions', ], [ 'label' => 'Academic Placement', 'icon' => 'fa-diagram-project', 'route' => 'admin.placement.index', 'permission' => 'admin.placement.index', 'module' => 'academic', ], [ 'label' => 'Take Attendance', 'icon' => 'fa-clipboard-check', 'route' => 'admin.attendance.index', 'permission' => 'admin.attendance.index', 'module' => 'academic', ], [ 'label' => 'Enter Results', 'icon' => 'fa-square-poll-vertical', 'route' => 'exam.index', 'permission' => 'exam.semesters.list', 'module' => 'exams', ], [ 'label' => 'Record Payment', 'icon' => 'fa-money-bill-wave', 'route' => 'admin.finance.module', 'params' => ['payments'], 'permission' => 'admin.finance.module', 'module' => ['finance', 'student_fees'], ], [ 'label' => 'Add Expense', 'icon' => 'fa-receipt', 'route' => 'admin.finance.module', 'params' => ['expenses'], 'permission' => 'admin.finance.module', 'module' => ['finance', 'expenses'], ], [ 'label' => 'Generate Report', 'icon' => 'fa-chart-line', 'route' => 'admin.report-center.index', 'permission' => 'admin.report-center.index', 'module' => 'report_center', ], ]; $shortcuts = collect($shortcutGroups)->filter(fn($item) => $canOpen($item['permission']) && $moduleVisible($item['module'])); @endphp @if($dashboardSectionVisible('top_summary'))

{{ __('admin.lms_dashboard') }}

{{ now()->format('l, F j, Y') }}

@if($moduleVisible(['student_management', 'courses'])) {{ __('admin.today_enroll') }} {{ number_format($todayEnroll) }} {{ __('admin.this_week') }} {{ number_format($weekEnroll) }} @endif
@if($canOpen('students.create') && $moduleVisible('student_management')) {{ __('admin.new_student') }} @endif @if($canOpen('courses.index') && $moduleVisible('courses')) {{ __('admin.courses') }} @endif
@endif @if($dashboardSectionVisible('quick_shortcuts') && $shortcuts->count())
Quick Shortcuts
Frequently used workflows shown according to your permissions.
{{ $shortcuts->count() }} available
@foreach($shortcuts as $shortcut) {{ $shortcut['label'] }} @endforeach
@endif @if($dashboardSectionVisible('kpi_cards'))
@if($moduleVisible('student_management'))
{{ __('admin.students') }}

{{ $n($students) }}

+2.5% {{ __('admin.vs_last_month') }}
{{ __('admin.total_registered') }} {{ __('admin.view_all') }}
@endif @if($moduleVisible('teacher_management'))
{{ __('admin.teachers') }}

{{ $n($teachers) }}

+1.2% {{ __('admin.vs_last_month') }}
{{ __('admin.active_instructors') }} {{ __('admin.view_all') }}
@endif @if($moduleVisible('courses'))
{{ __('admin.courses') }}

{{ $n($courses) }}

0.0% {{ __('admin.vs_last_month') }}
{{ __('admin.active_programs') }} @if($canOpen('courses.index') && $moduleVisible('courses')) {{ __('admin.view_all') }} @endif
@endif @if($moduleVisible(['courses', 'student_management']))
{{ __('admin.enrollments') }}

{{ $n($enroll) }}

+5.3% {{ __('admin.vs_last_month') }}
{{ __('admin.total_registrations') }} @if($canOpen('course-enrollments.index') && $moduleVisible('courses')) {{ __('admin.view_all') }} @endif
@endif
@endif @if($dashboardSectionVisible('performance_chart') || $dashboardSectionVisible('attendance_chart'))
@if($dashboardSectionVisible('performance_chart'))
{{ __('admin.performance_overview') }}
{{ __('admin.enrollments_payments_last_12_months') }}
{{ __('admin.12_month_window') }}
@endif @if($dashboardSectionVisible('attendance_chart'))
{{ __('admin.attendance') }}
{{ __('admin.last_30_days') }}
{{ __('admin.live') }}
{{ __('admin.present') }} {{ __('admin.absent') }} {{ __('admin.late') }}
@endif
@endif
@if($dashboardSectionVisible('top_courses') && $moduleVisible('courses'))
{{ __('admin.top_courses') }}
{{ __('admin.by_enrollment_count') }}
@if($canOpen('courses.index') && $moduleVisible('courses')) {{ __('admin.view_all_2') }} @endif
@if($topCourses->count())
@foreach($topCourses as $c) @endforeach
{{ __('admin.course_title') }}{{ __('admin.enrollments') }}{{ __('admin.share') }}
{{ $c->title }}
{{ number_format($c->enrollments_count) }} {{ round(($c->enrollments_count / max($enroll,1)) * 100, 1) }}%
@else

{{ __('admin.no_course_data_available') }}

@endif
@endif @if($dashboardSectionVisible('recent_enrollments') && $moduleVisible(['courses', 'student_management']))
{{ __('admin.recent_enrollments') }}
{{ __('admin.latest_8_registrations') }}
@if($canOpen('course-enrollments.index') && $moduleVisible('courses')) {{ __('admin.view_all_2') }} @endif
@if($recentEnrollments->count())
@foreach($recentEnrollments as $e) @php $st = $e->status ?? 'active'; $badgeSoft = $st === 'active' ? 'bg-success bg-opacity-10 text-success' : ($st === 'dropped' ? 'bg-danger bg-opacity-10 text-danger' : 'bg-secondary bg-opacity-10 text-secondary'); @endphp @endforeach
{{ __('admin.id') }}{{ __('admin.course') }}{{ __('admin.status') }}{{ __('admin.date') }}
#ENR-{{ $e->id }} {{ $e->course->title ?? 'Course #'.$e->course_id }} {{ ucfirst($st) }} {{ $e->created_at->format('M d, Y') }}
@else

{{ __('admin.no_recent_enrollments') }}

@endif
@endif
@if($dashboardSectionVisible('update_note'))
Dashboard auto-refreshes every 5 minutes. Last update: {{ now()->format('h:i A') }}
@endif @endsection @section('script') @endsection