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()]); } ?>