prepare("SELECT * FROM ride WHERE id = ?"); $stmt->execute([$rideId]); $ride = $stmt->fetch(PDO::FETCH_ASSOC); if (!$ride) { jsonError("Ride not found", 404); } // ‏رحلة بدأت فعلاً لا تُلغى أصلاً — نفس شرط الإلغاء الحقيقي. if (($ride['status'] ?? '') === 'Begin') { jsonError("Cannot cancel started ride"); } $exemptReason = ''; $currency = 'SYP'; $fee = computePassengerCancelFee( $con, $redisLocation ?? null, $rideId, $ride, $ride['driver_id'] ?? '0', $exemptReason, $currency ); jsonSuccess([ 'cancel_fee' => $fee, 'fee_currency' => $currency, 'fee_exempt' => $fee > 0 ? '' : $exemptReason, 'will_charge' => $fee > 0, ], "ok"); } catch (PDOException $e) { error_log("[preview_cancel_fee] " . $e->getMessage()); jsonError("DB Error", 500); }