add new featurs like gamination

This commit is contained in:
Hamza-Ayed
2026-05-08 22:46:34 +03:00
parent 5928695212
commit fc74c20730
4 changed files with 72 additions and 62 deletions

View File

@@ -3,40 +3,46 @@ 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
";
}
try {
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(r.price_for_driver), 0) 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
";
} 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();
$stmt = $con->prepare($sql);
$stmt->execute();
} catch (PDOException $e) {
error_log("getLeaderboard Error: " . $e->getMessage());
jsonError("Database error occurred");
}
if ($stmt->rowCount() > 0) {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

View File

@@ -3,30 +3,34 @@ require_once __DIR__ . '/../../connect.php';
$driver_id = filterRequest("driver_id");
$sql = "
SELECT
DATE(r.created_at) as day,
COUNT(r.id) as trips,
COALESCE(SUM(p.amount), 0) as earnings,
COALESCE(SUM(r.duration)/60, 0) as hours
FROM `ride` r
LEFT JOIN `payments` p ON r.id = p.rideId
WHERE r.driver_id = :driver_id
AND r.status = 'Finished'
AND r.created_at >= DATE(NOW()) - INTERVAL 6 DAY
GROUP BY DATE(r.created_at)
ORDER BY DATE(r.created_at) ASC
";
try {
$sql = "
SELECT
DATE(r.created_at) as day,
COUNT(r.id) as trips,
COALESCE(SUM(r.price_for_driver), 0) as earnings,
COALESCE(SUM(TIMESTAMPDIFF(MINUTE, r.time, r.endtime))/60, 0) as hours
FROM `ride` r
WHERE r.driver_id = :driver_id
AND r.status = 'Finished'
AND r.created_at >= DATE(NOW()) - INTERVAL 6 DAY
GROUP BY DATE(r.created_at)
ORDER BY DATE(r.created_at) ASC
";
$stmt = $con->prepare($sql);
$stmt->bindParam(':driver_id', $driver_id, PDO::PARAM_INT);
$stmt->execute();
$stmt = $con->prepare($sql);
$stmt->bindParam(':driver_id', $driver_id, PDO::PARAM_INT);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
jsonSuccess($rows);
} else {
// Return empty array instead of error so the app doesn't crash
jsonSuccess([]);
if ($stmt->rowCount() > 0) {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
jsonSuccess($rows);
} else {
jsonSuccess([]);
}
} catch (PDOException $e) {
// Return empty but log error
error_log("getWeeklyAggregate Error: " . $e->getMessage());
jsonError("Database error occurred");
}
?>