Fix wallet: safe parsing in Flutter + LEFT JOIN always returns balance

This commit is contained in:
Hamza-Ayed
2026-08-01 03:46:46 +03:00
parent 508a6ce1d0
commit 3be2254b70
2 changed files with 14 additions and 13 deletions
@@ -53,8 +53,13 @@ class PaymentController extends GetxController {
await CRUD().getWallet( await CRUD().getWallet(
link: AppLink.getWalletByPassenger, link: AppLink.getWalletByPassenger,
payload: {'passenger_id': box.read(BoxName.passengerID)}).then((value) { payload: {'passenger_id': box.read(BoxName.passengerID)}).then((value) {
box.write(BoxName.passengerWalletTotal, final msg = value['message'];
value['message'][0]['total'].toString()); if (msg is List && msg.isNotEmpty) {
box.write(BoxName.passengerWalletTotal,
(msg[0]['total'] ?? '0').toString());
} else {
box.write(BoxName.passengerWalletTotal, '0');
}
}); });
isLoading = false; isLoading = false;
update(); update();
@@ -4,7 +4,7 @@ $passenger_id = filterRequest("passenger_id");
$sql = "SELECT $sql = "SELECT
COALESCE(dummy.passenger_id, :passenger_id) AS passenger_id, COALESCE(dummy.passenger_id, :passenger_id) AS passenger_id,
COALESCE(SUM(pw.balance), 0) AS total, -- Adjust column to represent payments COALESCE(SUM(pw.balance), 0) AS total,
COALESCE(p.first_name, '') AS first_name, COALESCE(p.first_name, '') AS first_name,
COALESCE(p.last_name, '') AS last_name, COALESCE(p.last_name, '') AS last_name,
COALESCE(p.phone, '') AS phone COALESCE(p.phone, '') AS phone
@@ -19,15 +19,11 @@ LIMIT 0, 25;
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->execute(['passenger_id' => $passenger_id, 'passenger_id2' => $passenger_id]); $stmt->execute(['passenger_id' => $passenger_id, 'passenger_id2' => $passenger_id]);
if ($stmt->rowCount() > 0) { // LEFT JOIN يُرجع دائماً صفاً واحداً على الأقل (balance=0 إذا لم توجد محفظة)
// Fetch the record $row = $stmt->fetchAll(PDO::FETCH_ASSOC);
$row = $stmt->fetchAll(PDO::FETCH_ASSOC); if (!empty($row)) {
printSuccess($row);
printSuccess( $row); } else {
printFailure("No wallet record found");
}
else{
// Print a failure message
printFailure($message = "No wallet record found");
} }
?> ?>