add new featurs like gamination
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user