148 lines
6.0 KiB
PHP
148 lines
6.0 KiB
PHP
<?php
|
|
require_once __DIR__ . '/db/config.php';
|
|
|
|
$db = db();
|
|
$current_role = 'Admin';
|
|
$pageTitle = 'Admin Dashboard | Township Schools Platform';
|
|
|
|
// Fetch Some Stats
|
|
$total_learners = $db->query("SELECT COUNT(*) FROM learners")->fetchColumn();
|
|
|
|
// Attendance for today
|
|
$today = date('Y-m-d');
|
|
$present_today = $db->prepare("SELECT COUNT(*) FROM attendance WHERE date = ? AND status = 'present'");
|
|
$present_today->execute([$today]);
|
|
$present_today_count = $present_today->fetchColumn();
|
|
|
|
$presence_rate = $total_learners > 0 ? round(($present_today_count / $total_learners) * 100) : 0;
|
|
|
|
// Analytics: Attendance by Grade
|
|
$grade_stats = $db->query("
|
|
SELECT l.grade,
|
|
COUNT(l.id) as total,
|
|
SUM(CASE WHEN a.status = 'present' THEN 1 ELSE 0 END) as present
|
|
FROM learners l
|
|
LEFT JOIN attendance a ON l.id = a.learner_id AND a.date = '$today'
|
|
GROUP BY l.grade
|
|
ORDER BY l.grade
|
|
")->fetchAll();
|
|
|
|
include 'includes/header.php';
|
|
?>
|
|
|
|
<div class="container pb-5">
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<h2 class="h4 mb-1">School Admin Dashboard</h2>
|
|
<p class="text-muted small">Overview of school operations</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Stats Row -->
|
|
<div class="row g-3 mb-4">
|
|
<div class="col-md-3">
|
|
<div class="card p-3 stats-card">
|
|
<p>Total Learners</p>
|
|
<h3><?= $total_learners ?></h3>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card p-3 stats-card" style="border-left-color: #2E7D32;">
|
|
<p>Today's Presence</p>
|
|
<h3><?= $presence_rate ?>%</h3>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card p-3 stats-card" style="border-left-color: var(--secondary-color);">
|
|
<p>Total Staff</p>
|
|
<h3>12</h3>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card p-3 stats-card" style="border-left-color: #0288D1;">
|
|
<p>SGB Meetings</p>
|
|
<h3>1</h3>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-4">
|
|
<div class="col-md-8">
|
|
<div class="card mb-4">
|
|
<div class="card-header bg-white py-3">
|
|
<h5 class="mb-0">Attendance Analytics by Grade (Today)</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<?php foreach ($grade_stats as $stat): ?>
|
|
<?php
|
|
$rate = $stat['total'] > 0 ? round(($stat['present'] / $stat['total']) * 100) : 0;
|
|
$bar_color = $rate > 80 ? 'bg-success' : ($rate > 50 ? 'bg-warning' : 'bg-danger');
|
|
?>
|
|
<div class="mb-3">
|
|
<div class="d-flex justify-content-between mb-1">
|
|
<span class="small fw-semibold"><?= htmlspecialchars($stat['grade']) ?></span>
|
|
<span class="small text-muted"><?= $rate ?>% (<?= $stat['present'] ?>/<?= $stat['total'] ?>)</span>
|
|
</div>
|
|
<div class="progress" style="height: 8px;">
|
|
<div class="progress-bar <?= $bar_color ?>" role="progressbar" style="width: <?= $rate ?>%"></div>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-header bg-white py-3">
|
|
<h5 class="mb-0">Recent Activity</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<ul class="list-group list-group-flush">
|
|
<li class="list-group-item px-0">
|
|
<div class="d-flex justify-content-between">
|
|
<div>
|
|
<h6 class="mb-0">Daily Register Completed</h6>
|
|
<small class="text-muted">Grade 10A - Mrs. Mdluli</small>
|
|
</div>
|
|
<span class="text-muted small">10 mins ago</span>
|
|
</div>
|
|
</li>
|
|
<li class="list-group-item px-0">
|
|
<div class="d-flex justify-content-between">
|
|
<div>
|
|
<h6 class="mb-0">New Learner Registered</h6>
|
|
<small class="text-muted">Sipho Zulu - Grade 8B</small>
|
|
</div>
|
|
<span class="text-muted small">1 hour ago</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="card h-100">
|
|
<div class="card-header bg-white py-3">
|
|
<h5 class="mb-0">Quick Actions</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="d-grid gap-2">
|
|
<a href="learners.php" class="btn btn-outline-primary text-start">
|
|
<i class="bi bi-person-plus me-2"></i> Register New Learner
|
|
</a>
|
|
<button class="btn btn-outline-primary text-start">
|
|
<i class="bi bi-file-earmark-bar-graph me-2"></i> Generate Reports
|
|
</a>
|
|
<button class="btn btn-outline-primary text-start">
|
|
<i class="bi bi-megaphone me-2"></i> Send Parent Notice
|
|
</a>
|
|
<button class="btn btn-outline-primary text-start">
|
|
<i class="bi bi-calendar-event me-2"></i> Schedule Meeting
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php include 'includes/footer.php'; ?>
|