@extends('layouts.admin') @section('title', setting('school_name', 'ShulePoint') . ' | Admin Dashboard') @section('page-title', 'Admin Dashboard') @section('header-search')
{{-- AI answer modal --}} @endsection @section('content') @php $att = $stats['attendance_today'] ?? ['present' => 0, 'absent' => 0, 'late' => 0, 'total' => 0]; $attPct = $att['total'] > 0 ? round($att['present'] / $att['total'] * 100) : 0; @endphp {{-- Stat strip --}}
{{ number_format($stats['learners'] ?? 0) }}Learners · +{{ $stats['new_admissions'] ?? 0 }} this month
{{ number_format($stats['staff'] ?? 0) }}Staff members
KSh {{ number_format($stats['fee_collected'] ?? 0) }}Fees collected
KSh {{ number_format($stats['fee_pending'] ?? 0) }}Fees pending
{{-- Early warning + AI across the system --}}

At-risk learners {{ $atRiskTotal ?? 0 }} flagged

    @forelse($atRisk ?? [] as $r)
  • {{ $r['Learner'] }} · {{ $r['Class'] }} {!! $r['Risk'] === 'High' ? 'High' : 'Medium' !!}
    {{ $r['Flags'] }}
  • @empty
  • No learners flagged right now.
  • @endforelse

Fees collected vs expenses last 6 months (KSh)

{{-- Gender + Invoices --}}

Learners by gender

Invoices by status

{{-- Attendance trend (full width) --}}

Attendance trend % present, last 7 days

Today: {{ $attPct }}%
{{-- Class enrolment + Activity feed --}}

Enrolment per class top 8

Recent messages

    @forelse($recentMessages as $msg)
  • {{ \Illuminate\Support\Str::limit($msg->subject, 42) }} {{ ucfirst($msg->status) }}
    {{ ucfirst($msg->type) }} · {{ ucfirst($msg->audience) }} · {{ $msg->created_at }}
  • @empty
  • No messages yet.
  • @endforelse

Live activity across all modules

    @forelse($activities as $a)
  • {{ $a['text'] }}
    @if($a['when']){{ \Carbon\Carbon::parse($a['when'])->diffForHumans() }}@endif
  • @empty
  • No activity recorded yet — admit learners, collect fees or post messages to fill this feed.
  • @endforelse
{{-- Recent payments + side stack --}}

Recent payments

@forelse($recentPayments as $p) @empty @endforelse
#LearnerAmountMethodDate
{{ $p->id }} @if(isset($p->first_name)){{ $p->first_name }} {{ $p->last_name }}@else—@endif KSh {{ number_format($p->amount ?? 0) }} {{ $p->method ?? '—' }} {{ $p->paid_at ?? $p->created_at ?? '' }}
No payments yet.

Upcoming exams

    @forelse($upcomingExams as $e)
  • {{ $e->name }} {{ ucfirst($e->status) }}
    {{ $e->starts_at }} → {{ $e->ends_at }}
  • @empty
  • No upcoming exams.
  • @endforelse

Upcoming events

    @forelse($upcomingEvents as $event)
  • {{ $event->title ?? 'Event' }}
    {{ $event->start_date ?? '' }}
  • @empty
  • No upcoming events.
  • @endforelse
@endsection @push('styles') @endpush @push('scripts') @endpush