From 49880ede427ff6a9450166ca678059d6eee8daa2 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Tue, 18 Jun 2024 14:29:39 +0200 Subject: [PATCH] AdressDB visibility filter & not importing canceled buildings --- Layout/default/AddressDB/Index.php | 12 +++++++++++- application/AddressDB/AddressDBController.php | 11 ++++++++--- .../ADBAddressHelper/address_helper.php | 19 +++++++++++++++---- scripts/adb-rimo-import/rimo-import-test.php | 17 ++++++++++++++++- 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/Layout/default/AddressDB/Index.php b/Layout/default/AddressDB/Index.php index 57f4db95c..761b3c57a 100644 --- a/Layout/default/AddressDB/Index.php +++ b/Layout/default/AddressDB/Index.php @@ -123,7 +123,15 @@ " /> - + +
+ + +
@@ -158,6 +166,7 @@ + @@ -176,6 +185,7 @@ + diff --git a/application/AddressDB/AddressDBController.php b/application/AddressDB/AddressDBController.php index 518016063..13efe5343 100644 --- a/application/AddressDB/AddressDBController.php +++ b/application/AddressDB/AddressDBController.php @@ -77,8 +77,7 @@ class AddressDBController extends mfBaseController { if(!array_key_exists("netzgebiet_id", $addressdb_filter)) { $addressdb_filter['netzgebiet_id'] = $netzgebiet_ids; } - $addressdb_filter["visibility"] = ["public", "private"]; - + $this->layout()->set("my_networks", ADBNetzgebietModel::getAll()); $this->layout()->set("my_adb_networks", $my_adb_networks); @@ -161,7 +160,13 @@ class AddressDBController extends mfBaseController { unset($filter['ortschaft']); unset($filter['ortschaft_id']); } - + + if(array_key_exists("visibility", $filter) && $filter['visibility']) { + $new_filter['visibility'] = $filter['visbility']; + } else { + $new_filter["visibility"] = ["public", "private"]; + unset($filter['visibility']); + } if(is_array($filter) && count($filter)) { foreach($filter as $name => $value) { diff --git a/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php b/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php index 44dfae442..286db60ae 100644 --- a/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php +++ b/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php @@ -152,6 +152,9 @@ class AddressHelper } } + $execution_state_id = $building->executionState->name; + $execution_state_label = $building->executionState->userLabel; + $addr_dbg_str = "strasse_hausnummer: $strasse_hausnummer | zusatz: $addresszusatz | gemkz: $gem_kz | gem_name: $gem_name | ort_name: $ort_name | plz_name: $plz_name | adrcd: $adr | $rimo_id"; if (!$hausnummer_name || !$gem_name || !$plz_name || !$ort_name || !$strasse_name) { @@ -178,10 +181,6 @@ class AddressHelper } } - - - - $gemeinde = ADBGemeindeModel::getFirst(["kennziffer" => $gem_kz]); if (!$gemeinde) { //$this->log->warning("[EE] Gemeinde $gem_name $gem_kz nicht gefunden ($addr_dbg_str)"); @@ -218,6 +217,12 @@ class AddressHelper if (!$hausnummer) { $hausnummer = $this->findHausnummerByStreet($strasse_name, $hausnummer_name, $gemeinde_id); if (!$hausnummer) { + // dont create Hausnummer if Canceled in Rimo + if($execution_state_id == "99") { + echo "== Not importing because execution state $execution_state_id ($execution_state_label)\n"; + return false; + } + // hausnummer anlegen $plz = ADBPlzModel::getFirst(["gemeinde_id" => $gemeinde_id, "plz" => $plz_name]); @@ -298,6 +303,12 @@ class AddressHelper } } + if($execution_state_id == "99" && !$hausnummer->netzgebiet_id) { + // dont import Hausnummer if Canceled in Rimo + echo "== not setting netzgebite_id because execution state $execution_state_id ($execution_state_label)\n"; + return false; + } + $this->checkGemeindeNetzgebiet($gemeinde, $this->netzgebiet); // update hausnummer diff --git a/scripts/adb-rimo-import/rimo-import-test.php b/scripts/adb-rimo-import/rimo-import-test.php index 6708f347b..2d5d6d979 100755 --- a/scripts/adb-rimo-import/rimo-import-test.php +++ b/scripts/adb-rimo-import/rimo-import-test.php @@ -240,6 +240,21 @@ foreach ($clusters as $cluster_data) { } $hausnummer_found_count++; + /* + * Set Building Status based on Operational-/Executionstate + */ + $b_execution_state_id = $building->executionState->name; + $b_execution_state_label = $building->executionState->userLabel; + $b_operationalstate_id = $building->operationalState->name; + $b_operationalstate_label = $building->operationalState->userLabel; + + + + if($b_execution_state_id == "99" && $hausnummer->visibility != "private") { + echo "== Setting visibility to private because execution state $b_execution_state_id ($b_execution_state_label) [".$hausnummer->id."]\n"; + $hausnummer->visibility = "private"; + $hausnummer->save(); + } $last_unit_num = 0; $existing_units = []; @@ -338,7 +353,7 @@ foreach ($clusters as $cluster_data) { $unit_extdata->rimo->ftu = $ftu_data; $unit->external_data = json_encode($unit_extdata); if (!$unit->save()) { - die("!!! Error saving unit extdata\n" . print_f($unit)); + die("!!! Error saving unit extdata\n" . print_r($unit)); } // check OAID
Netzgebiet Adrcd OAID
visibility == "private") ? "" : ""?> netzgebiet->name?> adrcd?>subcd) ? "-".$address->subcd : ""?> oaid?>