Files
intaleq_v3_pure_php/ride/gamification/getLeaderboard.php

55 lines
1.4 KiB
PHP

<?php
require_once __DIR__ . '/../../connect.php';
$type = isset($_POST['type']) ? filterRequest("type") : 'trips';
if ($type === 'earnings') {
$sql = "
SELECT
d.id as driver_id,
COALESCE(d.name, d.nameArabic, d.firstName, 'Driver') as name,
d.personal_photo as photoUrl,
COALESCE(SUM(p.amount), 0) as value
FROM `driver` d
JOIN `payments` p ON d.id = p.driverID
WHERE p.created_at >= DATE(NOW() - INTERVAL WEEKDAY(NOW()) DAY)
GROUP BY d.id
ORDER BY value DESC
LIMIT 10
";
} else {
// Default to trips
$sql = "
SELECT
d.id as driver_id,
COALESCE(d.name, d.nameArabic, d.firstName, 'Driver') as name,
d.personal_photo as photoUrl,
COUNT(r.id) as value
FROM `driver` d
JOIN `ride` r ON d.id = r.driver_id
WHERE r.status = 'Finished'
AND r.created_at >= DATE(NOW() - INTERVAL WEEKDAY(NOW()) DAY)
GROUP BY d.id
ORDER BY value DESC
LIMIT 10
";
}
$stmt = $con->prepare($sql);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Add Rank manually to support older MySQL versions
$rank = 1;
foreach ($rows as &$row) {
$row['rank'] = $rank++;
}
jsonSuccess($rows);
} else {
jsonSuccess([]);
}
?>