Fix wallet: safe parsing in Flutter + LEFT JOIN always returns balance
This commit is contained in:
@@ -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");
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
Reference in New Issue
Block a user