37970-vm/api/v1/Controllers/LeaderboardController.php
2026-01-30 16:28:00 +00:00

33 lines
958 B
PHP

<?php
namespace Api\Controllers;
use Api\Core\Controller;
use Api\Core\Response;
use Api\Core\Auth;
class LeaderboardController extends Controller {
public function index() {
$user = Auth::getUser();
if (!$user) return Response::error('Unauthorized', 401);
$db = db();
$schoolId = $user['school_id'];
// Get learners with their average marks
$sql = "SELECT l.id, l.full_name, AVG(m.marks_obtained / a.total_marks * 100) as average_percent
FROM learners l
JOIN marks m ON l.id = m.learner_id
JOIN assessments a ON m.assessment_id = a.id
WHERE l.school_id = :school_id
GROUP BY l.id
ORDER BY average_percent DESC";
$stmt = $db->prepare($sql);
$stmt->execute(['school_id' => $schoolId]);
$leaderboard = $stmt->fetchAll();
Response::json($leaderboard);
}
}