37970-vm/admin.php
Flatlogic Bot 7a517224e6 v5
2026-01-30 15:02:53 +00:00

158 lines
6.6 KiB
PHP

<?php
require_once __DIR__ . '/db/config.php';
session_start();
// Auth Check
if (!isset($_SESSION['user_id']) || $_SESSION['role'] !== 'Admin') {
header('Location: login.php');
exit;
}
$db = db();
$school_id = $_SESSION['school_id'];
$pageTitle = 'Admin Dashboard | SOMS';
// Fetch Some Stats for this school
$total_learners_stmt = $db->prepare("SELECT COUNT(*) FROM learners WHERE school_id = ?");
$total_learners_stmt->execute([$school_id]);
$total_learners = $total_learners_stmt->fetchColumn();
// Attendance for today
$today = date('Y-m-d');
$present_today = $db->prepare("SELECT COUNT(*) FROM attendance WHERE date = ? AND status = 'present' AND school_id = ?");
$present_today->execute([$today, $school_id]);
$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->prepare("
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
WHERE l.school_id = :school_id
GROUP BY l.grade
ORDER BY l.grade
");
$grade_stats->execute(['today' => $today, 'school_id' => $school_id]);
$grade_stats = $grade_stats->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 operations for <strong>School ID: <?= $school_id ?></strong></p>
</div>
</div>
<!-- Stats Row -->
<div class="row g-3 mb-4">
<div class="col-md-3">
<div class="card p-3 stats-card shadow-sm">
<p class="text-muted mb-1">Total Learners</p>
<h3 class="mb-0"><?= $total_learners ?></h3>
</div>
</div>
<div class="col-md-3">
<div class="card p-3 stats-card shadow-sm" style="border-left: 4px solid #2E7D32;">
<p class="text-muted mb-1">Today's Presence</p>
<h3 class="mb-0"><?= $presence_rate ?>%</h3>
</div>
</div>
<div class="col-md-3">
<div class="card p-3 stats-card shadow-sm" style="border-left: 4px solid var(--secondary-color);">
<p class="text-muted mb-1">Total Staff</p>
<h3 class="mb-0">...</h3>
</div>
</div>
<div class="col-md-3">
<div class="card p-3 stats-card shadow-sm" style="border-left: 4px solid #0288D1;">
<p class="text-muted mb-1">Pending Tasks</p>
<h3 class="mb-0">3</h3>
</div>
</div>
</div>
<div class="row g-4">
<div class="col-md-8">
<div class="card mb-4 shadow-sm border-0">
<div class="card-header bg-white py-3">
<h5 class="mb-0 fw-bold">Attendance Analytics by Grade (Today)</h5>
</div>
<div class="card-body">
<?php if (empty($grade_stats)): ?>
<p class="text-center text-muted">No attendance data recorded today.</p>
<?php endif; ?>
<?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">Grade <?= htmlspecialchars($stat['grade']) ?></span>
<span class="small text-muted"><?= $rate ?>% (<?= (int)$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 shadow-sm border-0">
<div class="card-header bg-white py-3">
<h5 class="mb-0 fw-bold">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 small fw-bold">System Online</h6>
<small class="text-muted">School instance successfully initialized.</small>
</div>
<span class="text-muted small">Just now</span>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm border-0 mb-4">
<div class="card-header bg-white py-3">
<h5 class="mb-0 fw-bold">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> Manage Learners
</a>
<a href="bulk-upload.php" class="btn btn-outline-primary text-start">
<i class="bi bi-upload me-2"></i> Bulk Upload Learners
</a>
<a href="events.php" class="btn btn-outline-primary text-start">
<i class="bi bi-calendar-event me-2"></i> Schedule School Event
</a>
<a href="reports.php" class="btn btn-outline-primary text-start">
<i class="bi bi-file-earmark-bar-graph me-2"></i> Academic Reports
</a>
<a href="notifications.php" class="btn btn-outline-primary text-start">
<i class="bi bi-megaphone me-2"></i> Performance Notifications
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include 'includes/footer.php'; ?>