From 9f8bc2011d3a2d5bb0aa6f8148b6af7ad662bbd4 Mon Sep 17 00:00:00 2001 From: Luca Haid Date: Sat, 13 Dec 2025 11:07:50 +0000 Subject: [PATCH] fixed findStreets query --- .../PreorderIFrame/PreorderIFrameModel.php | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/application/PreorderIFrame/PreorderIFrameModel.php b/application/PreorderIFrame/PreorderIFrameModel.php index 6ae7780c0..692c9a518 100644 --- a/application/PreorderIFrame/PreorderIFrameModel.php +++ b/application/PreorderIFrame/PreorderIFrameModel.php @@ -58,33 +58,29 @@ class PreorderIFrameModel extends mfBaseModel public function findStreets(array $params): array { - $whereClauses = []; - if (!empty($params['gemeindeId'])) { - $whereClauses[] = "g.id = " . intval($params['gemeindeId']); - } elseif (!empty($params['clusterId'])) { - $whereClauses[] = "gn.netzgebiet_id = " . intval($params['clusterId']); - } else { - return []; - } + if (empty($params['gemeindeId']) && empty($params['clusterId'])) return []; - $whereClauses[] = "o.name = '" . $this->db->escape($params['city']) . "'"; - $whereClauses[] = "EXISTS (SELECT 1 FROM addressdb.Plz p WHERE p.plzstring = " . $this->db->escape($params['zip']) . " AND p.gemeinde_id = o.gemeinde_id)"; - $whereString = implode(" AND ", $whereClauses); + $sql = "SELECT DISTINCT s.name + FROM addressdb.Strasse s + JOIN addressdb.Gemeinde g ON s.gemeinde_id = g.id + JOIN addressdb.Ortschaft o ON o.gemeinde_id = g.id + LEFT JOIN addressdb.GemeindeNetzgebiet gn ON g.id = gn.gemeinde_id + WHERE o.name = '" . $this->db->escape($params['city']) . "' + AND EXISTS (SELECT 1 FROM addressdb.Plz p WHERE p.plzstring = " . $this->db->escape($params['zip']) . " AND p.gemeinde_id = o.gemeinde_id)"; - $query = " - SELECT DISTINCT s.name - FROM addressdb.Strasse s - JOIN addressdb.Gemeinde g ON s.gemeinde_id = g.id - JOIN addressdb.Ortschaft o ON o.gemeinde_id = g.id - LEFT JOIN addressdb.GemeindeNetzgebiet gn ON g.id = gn.gemeinde_id - WHERE $whereString - ORDER BY s.name ASC - "; + $cond = !empty($params['gemeindeId']) + ? " AND g.id = " . intval($params['gemeindeId']) + : " AND gn.netzgebiet_id = " . intval($params['clusterId']); - $res = $this->db->query($query); - return array_column($this->db->fetch_all_assoc($res), 'name'); + $rows = $this->db->fetch_all_assoc($this->db->query($sql . $cond)); + + // Fallback: If empty result and we were using clusterId, run without the specific ID constraint + if (empty($rows) && empty($params['gemeindeId'])) + $rows = $this->db->fetch_all_assoc($this->db->query($sql)); + + return array_column($rows, 'name'); } - + public function findAddresses(array $params): array { $whereClauses = [