From 47aeb68a10d0222e9dd9de973e3cfe2f7d7f7a77 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Wed, 7 Dec 2022 02:33:03 +0100 Subject: [PATCH] Improved performance in findAddress --- application/Api/v1/AddressdbApicontroller.php | 74 +++++-------------- 1 file changed, 18 insertions(+), 56 deletions(-) diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php index 882cfb84a..a99596ce6 100644 --- a/application/Api/v1/AddressdbApicontroller.php +++ b/application/Api/v1/AddressdbApicontroller.php @@ -341,59 +341,6 @@ class AddressdbApicontroller extends mfBaseApicontroller { $res = $this->db()->query($sql); if($this->db()->num_rows($res)) { - if($format == "flat") { - $unit_counts = []; - while($data = $this->db()->fetch_object($res)) { - // get unit count - if(!array_key_exists($data->hausnummer_id, $unit_counts)) { - $unit_counts[$data->hausnummer_id] = ADBWohneinheitModel::count(['hausnummer_id' => $data->hausnummer_id]); - } - - // get allowed preorderTypes - $ptypes = []; - if($data->freigabe) { - $freigaben = json_decode($data->freigabe); - if(is_array($freigaben) && count($freigaben)) { - foreach($freigaben as $freigabe) { - if(in_array($freigabe, $this->allowed_preordertypes)) { - $ptypes[] = $freigabe; - } - } - } - } - - $housenumber = $data->hausnummer; - if($this->hausnummer_add_zusatz) { - if($data->zusatz) { - $housenumber .= " (".$data->zusatz.")"; - } - } - - - $addresses[] = [ - 'oaid' => $data->wohneinheit_oaid, - 'building_oaid' => $data->hausnummer_oaid, - 'zip' => $data->plz, - 'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde, - 'district' => $data->ortschaft, - 'street' => $data->strasse, - 'housenumber' => $housenumber, - 'lot_number' => $data->grund_nr, - 'building_unit_count' => (int)$unit_counts[$data->hausnummer_id], - 'num' => (int)$data->num, - 'block' => $data->block, - 'stock' => $data->stock, - 'stiege' => $data->stiege, - 'tuer' => $data->tuer, - 'zusatz' => $data->zusatz, - 'gps_lat' => (float)$data->gps_lat, - 'gps_long' => (float)$data->gps_long, - 'rollout_year' => ($data->rollout) ? (int)$data->rollout : null, - 'rollout_info' => $data->rollout_info, - 'preorderTypes' => $ptypes - ]; - } - } else { $tmp_addresses = []; while($data = $this->db()->fetch_object($res)) { $address_key = $data->hausnummer_id."-".$data->zusatz; @@ -451,10 +398,25 @@ class AddressdbApicontroller extends mfBaseApicontroller { } foreach($tmp_addresses as $ta) { - $addresses[] = $ta; + if($format == "tree") { + $addresses[] = $ta; + } else { + foreach($ta['units'] as $u) { + $new_address = $ta; + unset($new_address['units']); + $new_address['building_oaid'] = $ta['oaid']; + $new_address['oaid'] = $u['oaid']; + $new_address['num'] = $u['num']; + $new_address['block'] = $u['block']; + $new_address['stiege'] = $u['stiege']; + $new_address['stock'] = $u['stock']; + $new_address['tuer'] = $u['tuer']; + $new_address['zusatz'] = $u['zusatz']; + $addresses[] = $new_address; + } + } } - - } + } return mfResponse::Ok(['addresses' => $addresses]);