prepare(" SELECT id, name_ar, chain_name, city, address, lat, lng, phone, discount_percent, (POW(lat - ?, 2) + POW(lng - ?, 2)) AS dist FROM fuel_stations WHERE is_active = 1 ORDER BY (lat IS NULL), dist ASC LIMIT 50 "); $st->execute([(float) $lat, (float) $lng]); } else { $st = $con->query(" SELECT id, name_ar, chain_name, city, address, lat, lng, phone, discount_percent FROM fuel_stations WHERE is_active = 1 ORDER BY city ASC, name_ar ASC LIMIT 50 "); } $rows = $st->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { error_log('[fuel/stations] ' . $e->getMessage()); jsonError('Server error'); } $out = array_map(static fn(array $r): array => [ 'id' => (int) $r['id'], 'name' => $r['name_ar'], 'chain' => $r['chain_name'], 'city' => $r['city'], 'address' => $r['address'], 'lat' => $r['lat'] !== null ? (float) $r['lat'] : null, 'lng' => $r['lng'] !== null ? (float) $r['lng'] : null, 'phone' => $r['phone'], 'discount_percent' => (float) $r['discount_percent'], ], $rows); jsonSuccess(['stations' => $out], 'success');