diff --git a/application/ADBNetzgebiet/ADBNetzgebietModel.php b/application/ADBNetzgebiet/ADBNetzgebietModel.php index 37cf993ee..26185e839 100644 --- a/application/ADBNetzgebiet/ADBNetzgebietModel.php +++ b/application/ADBNetzgebiet/ADBNetzgebietModel.php @@ -57,7 +57,7 @@ class ADBNetzgebietModel { return null; } - public static function getAll() { + public static function getAll($indexed_by_id = false) { $items = []; $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); @@ -65,7 +65,12 @@ class ADBNetzgebietModel { $res = $db->select("Netzgebiet", "*", "1=1 ORDER BY name"); if($db->num_rows($res)) { while($data = $db->fetch_object($res)) { - $items[] = new ADBNetzgebiet($data); + if($indexed_by_id) { + $items[$data->id] = new ADBNetzgebiet($data); + } else { + $items[] = new ADBNetzgebiet($data); + } + } } return $items; @@ -102,7 +107,7 @@ class ADBNetzgebietModel { if(is_array($limit) && count($limit)) { if(is_numeric($limit['start']) && is_numeric($limit['count'])) { $sql .= " LIMIT ".$limit['start'].", ".$limit['count']; - } elseif(is_numeric($count)) { + } elseif(is_numeric($limit['count'])) { $sql .= " LIMIT ".$limit['count']; } } diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php index d4531ea21..41bfb98e8 100644 --- a/application/Api/v1/AddressdbApicontroller.php +++ b/application/Api/v1/AddressdbApicontroller.php @@ -651,6 +651,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { } $addresses = []; + $netzgebiete = ADBNetzgebietModel::getAll(true); $where = "1=1"; @@ -699,6 +700,10 @@ class AddressdbApicontroller extends mfBaseApicontroller { if($this->db()->num_rows($res)) { $tmp_addresses = []; while($data = $this->db()->fetch_object($res)) { + + // never return addresses without OAID if OAID is required in Network + if((!$data->hausnummer_oaid || !$data->wohneinheit_oaid) && $netzgebiete[$data->netzgebiet_id]->unit_create_oaid) continue; + $address_key = $data->hausnummer_id; if($this->hausnummer_add_zusatz) { $address_key = $data->hausnummer_id . "-" . $data->zusatz; diff --git a/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php b/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php index eb9e327fc..d2e4e972e 100644 --- a/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php +++ b/scripts/adb-rimo-import/ADBAddressHelper/address_helper.php @@ -418,6 +418,10 @@ class AddressHelper $hausnummer->save(); } + if(!$hausnummer->oaid && $this->netzgebiet->unit_create_oaid) { + $hausnummer->getNewOAID(); + } + //echo ">>>>>>>>>>>>>>>>>>>\nupdating hausnummer:\n"; //print_r($hausnummer);exit; diff --git a/scripts/adb-rimo-import/regenerate-missing-unit-oaids.php b/scripts/adb-rimo-import/regenerate-missing-unit-oaids.php new file mode 100644 index 000000000..3299b15bc --- /dev/null +++ b/scripts/adb-rimo-import/regenerate-missing-unit-oaids.php @@ -0,0 +1,49 @@ +#!/usr/bin/php +id); +define("INTERNAL_USER_USERNAME", $me->username); +define("MFBASE_BYPASS_LOGIN", true); + +$h = 0; +$u = 0; + +foreach(ADBNetzgebietModel::getAll() as $netzgebiet) { + if(!$netzgebiet->unit_create_oaid) continue; + if(!$netzgebiet->rimo_id) continue; + + //echo $netzgebiet->name."\n";continue; + + foreach(ADBHausnummerModel::search(["netzgebiet_id" => $netzgebiet->id]) as $hausnummer) { + if(!$hausnummer->oaid) { + echo "h ".$hausnummer->id." = ".$hausnummer->oaid."\n"; + $hausnummer->oaid = $hausnummer->getNewOaid(); + if(!$hausnummer->save()) die("Error saving hausnummer\n"); + echo "h ".$hausnummer->id." => ".$hausnummer->oaid."\n"; + $h++; + } + foreach($hausnummer->wohneinheiten as $unit) { + if(!$unit->oaid) { + echo "u ".$unit->id." = ".$unit->oaid."\n"; + $unit->oaid = $unit->getNewOaid(); + if(!$unit->save()) die("Error saving unit\n"); + echo "u ".$unit->id." => ".$unit->oaid."\n"; + $u++; + } + } + } + +} + +echo "Updated $h Buildings and $u Wohneinheiten\n"; \ No newline at end of file diff --git a/scripts/adb-rimo-import/rimo-import.php b/scripts/adb-rimo-import/rimo-import.php index acfb53ec3..95967500d 100755 --- a/scripts/adb-rimo-import/rimo-import.php +++ b/scripts/adb-rimo-import/rimo-import.php @@ -20,6 +20,7 @@ $me = new \User(TT_RIMO_IMPORT_USER_ID); define("INTERNAL_USER_ID", $me->id); define("INTERNAL_USER_USERNAME", $me->username); +define("MFBASE_BYPASS_LOGIN", true); $mainlog = \mfLoghandler::singleton(); $log = new \mfLog_File(); @@ -311,6 +312,12 @@ foreach ($clusters as $cluster_data) { if (!$unit->save()) { die("Error saving new unit\n" . print_r($unit, true)); } + if(!$unit->oaid && $adb_netzgebiet->unit_create_oaid) { + $unit->oaid = $unit->getNewOAID(); + if(!$unit->save()) { + die("Error saving new unit OAID\n" . print_r($unit, true)); + } + } } } @@ -348,6 +355,13 @@ foreach ($clusters as $cluster_data) { if (!$unit->save()) { die("Error saving new unit\n" . print_r($home, true)); } + if(!$unit->oaid && $adb_netzgebiet->unit_create_oaid) { + $unit->oaid = $unit->getNewOAID(); + if(!$unit->save()) { + die("Error saving new unit OAID\n" . print_r($unit, true)); + } + } + $unit = new \ADBWohneinheit($unit->id); \mfValuecache::singleton()->set("adbhausnummer-save-nesting-level-".$hausnummer->id, 0); \mfValuecache::singleton()->set("adbwohneinheit-save-nesting-level-".$unit->id, 0);