Files
intaleq/payment_server/v2/main/ride/payment/getAllPayment.php
T

56 lines
2.7 KiB
PHP

<?php
include "../../connect.php";
$driverID = filterRequest("driverID");
try {
// 1. Get ride stats using local $conRide
$rideStats = [];
try {
$rideDbname = getenv('DB_RIDE_NAME') ?: 'rideDB';
$rideDbHost = getenv('DB_RIDE_HOST') ?: (getenv('DB_HOST') ?: 'mysql');
$rideUser = getenv('DB_RIDE_USER') ?: 'root';
$ridePass = getenv('DB_RIDE_PASS') ?: getenv('MYSQL_ROOT_PASSWORD') ?: '';
$dsnRide = "mysql:host=$rideDbHost;dbname=$rideDbname;charset=utf8mb4";
$options = [
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
$conRide = new PDO($dsnRide, $rideUser, $ridePass, $options);
$sqlRide = "SELECT
(SELECT COUNT(*) FROM `ride` WHERE LOWER(`status`) IN ('finished','completed') AND `created_at` BETWEEN CURRENT_DATE() + INTERVAL 7 HOUR AND CURRENT_DATE() + INTERVAL 10 HOUR AND `driver_id` = :driverID) AS morning_count,
(SELECT COUNT(*) FROM `ride` WHERE LOWER(`status`) IN ('finished','completed') AND `created_at` BETWEEN CURRENT_DATE() + INTERVAL 15 HOUR AND CURRENT_DATE() + INTERVAL 18 HOUR AND `driver_id` = :driverID) AS afternoon_count,
(SELECT COALESCE(SUM(price), 0) FROM `ride` WHERE `driver_id` = :driverID AND LOWER(`status`) IN ('finished','completed') AND `created_at` > CURRENT_DATE() - INTERVAL 1 WEEK) AS total_amount_last_week
FROM dual";
$stmtRide = $conRide->prepare($sqlRide);
$stmtRide->bindValue(':driverID', $driverID);
$stmtRide->execute();
$rideStats = $stmtRide->fetch(PDO::FETCH_ASSOC) ?: [];
} catch (Exception $e) {
error_log('[getAllPayment] DB_RIDE Connection Error: ' . $e->getMessage());
$rideStats = ['morning_count' => 0, 'afternoon_count' => 0, 'total_amount_last_week' => 0];
}
// 2. Get payment stats using $con
$sqlPayment = "SELECT COALESCE(SUM(amount), 0) AS total_amount FROM payments WHERE isGiven = 'waiting' AND `driverID` = :driverID";
$stmtPayment = $con->prepare($sqlPayment);
$stmtPayment->bindValue(':driverID', $driverID);
$stmtPayment->execute();
$paymentStats = $stmtPayment->fetch(PDO::FETCH_ASSOC) ?: [];
// 3. Combine
if (!empty($rideStats) || !empty($paymentStats)) {
$row = [
array_merge($rideStats, $paymentStats)
];
printSuccess($row);
} else {
printFailure("No wallet record found");
}
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(["status" => "error", "message" => "SQL Error: " . $e->getMessage()]);
}
?>