diff --git a/payment_server/v2/main/connect.php b/payment_server/v2/main/connect.php index a0f2481..dc56a1c 100755 --- a/payment_server/v2/main/connect.php +++ b/payment_server/v2/main/connect.php @@ -53,14 +53,7 @@ try { ]; $con = new PDO($dsn, $user, $pass, $options); - // Ride DB Connection (for cross-db queries) - $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"; - $conRide = new PDO($dsnRide, $rideUser, $ridePass, $options); + // 5. JWT Authentication include __DIR__ . "/functions.php"; diff --git a/payment_server/v2/main/ride/payment/getAllPayment.php b/payment_server/v2/main/ride/payment/getAllPayment.php index bde907a..b499dcc 100644 --- a/payment_server/v2/main/ride/payment/getAllPayment.php +++ b/payment_server/v2/main/ride/payment/getAllPayment.php @@ -3,17 +3,35 @@ include "../../connect.php"; $driverID = filterRequest("driverID"); try { - // 1. Get ride stats using $conRide - $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) ?: []; + // 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"; diff --git a/payment_server/v2/main/ride/payment/getCountRide.php b/payment_server/v2/main/ride/payment/getCountRide.php index 32c9375..ccab538 100644 --- a/payment_server/v2/main/ride/payment/getCountRide.php +++ b/payment_server/v2/main/ride/payment/getCountRide.php @@ -13,6 +13,18 @@ WHERE "; // كان المعرّف يُدمج في نص الاستعلام مباشرةً — حقن SQL. 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); + $stmt = $conRide->prepare($sql); $stmt->bindValue(':driver_id', $driver_id); $stmt->execute();