diff --git a/Layout/default/AddressDB/Form.php b/Layout/default/AddressDB/Form.php index 8ef16663f..4e5776ade 100644 --- a/Layout/default/AddressDB/Form.php +++ b/Layout/default/AddressDB/Form.php @@ -310,7 +310,20 @@ - + +
+ +
+ +
+ + In Address- und Bestell-API +
+
+ diff --git a/Layout/default/AddressDB/Index.php b/Layout/default/AddressDB/Index.php index 5780eb9a9..51bc19991 100644 --- a/Layout/default/AddressDB/Index.php +++ b/Layout/default/AddressDB/Index.php @@ -2,6 +2,11 @@ $pagination_baseurl = $this->getUrl($Mod,"Index"); $pagination_baseurl_params = ["filter" => $filter]; $pagination_entity_name = "Adressen"; + + if(!is_array($filter)) { + $filter = []; + } + ?> @@ -36,16 +41,16 @@
- + " />
@@ -54,13 +59,13 @@
" id="filter-gemeinde-text"> - + " />
@@ -70,53 +75,53 @@
" id="filter-ortschaft-text"> - + " />
- + " />
- + " />
- + " />
- + " />
- + " />
- + " />
- + " />
diff --git a/Layout/default/Preorder/include/preorder-detail.php b/Layout/default/Preorder/include/preorder-detail.php index 07e3120c0..59069f186 100644 --- a/Layout/default/Preorder/include/preorder-detail.php +++ b/Layout/default/Preorder/include/preorder-detail.php @@ -8,6 +8,9 @@ + is("Admin") && $preorder->adb_hausnummer->borderpoint_lat && $preorder->adb_hausnummer->borderpoint_long): ?> + +
@@ -424,12 +427,45 @@ + is("Admin")): ?> +
+
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+
+
+ + + \ No newline at end of file diff --git a/application/ADBHausnummer/ADBHausnummerModel.php b/application/ADBHausnummer/ADBHausnummerModel.php index 754bb4190..faae998ef 100644 --- a/application/ADBHausnummer/ADBHausnummerModel.php +++ b/application/ADBHausnummer/ADBHausnummerModel.php @@ -19,9 +19,13 @@ class ADBHausnummerModel { public $unit_count; public $gps_lat; public $gps_long; + public $borderpoint_lat; + public $borderpoint_long; + public $trenches; public $rollout; public $rollout_info; public $freigabe; + public $visibility; public $manual_add; public $manual_add_by; public $manual_add_info; @@ -349,6 +353,16 @@ class ADBHausnummerModel { } } + if(array_key_exists("visibility", $filter)) { + $visibility = $filter['visibility']; + if(is_array($visibility)) { + $where .= " AND Hausnummer.visibility IN ('".implode("','", $visibility)."')"; + } else { + $visibility = FronkDB::singleton()->escape($visibility); + $where .= " AND Hausnummer.visibility = '$visibility'"; + } + } + if(array_key_exists("rollout", $filter)) { $rollout = FronkDB::singleton()->escape($filter['rollout']); if($rollout) { diff --git a/application/AddressDB/AddressDB.php b/application/AddressDB/AddressDB.php index 876ede42d..355580862 100644 --- a/application/AddressDB/AddressDB.php +++ b/application/AddressDB/AddressDB.php @@ -37,6 +37,7 @@ class AddressDB { `Hausnummer`.`rollout` AS `rollout`, `Hausnummer`.`rollout_info` AS `rollout_info`, `Hausnummer`.`freigabe` AS `freigabe`, + `Hausnummer`.`visibility` AS `visibility`, `Hausnummer`.`rimo_id` AS `hausnummer_rimo_id`, `Hausnummer`.`rimo_fcp_name` AS `rimo_fcp_name`, `Wohneinheit`.`id` AS `wohneinheit_id`, diff --git a/application/AddressDB/AddressDBController.php b/application/AddressDB/AddressDBController.php index 3670858c0..ba5ae40f3 100644 --- a/application/AddressDB/AddressDBController.php +++ b/application/AddressDB/AddressDBController.php @@ -48,7 +48,7 @@ class AddressDBController extends mfBaseController { if($this->me->is("Admin")) { $my_networks = NetworkModel::getAll(); - if($filter['network_id']) { + if(array_key_exists("network_id", $filter) && $filter['network_id']) { $filter['netzgebiet_id'] = $filter['network_id']; } } else { @@ -77,12 +77,12 @@ class AddressDBController extends mfBaseController { if(!array_key_exists("netzgebiet_id", $addressdb_filter)) { $addressdb_filter['netzgebiet_id'] = $netzgebiet_ids; } - //var_dump($my_adb_networks);exit; + $addressdb_filter["visibility"] = ["public", "private"]; + $this->layout()->set("my_networks", ADBNetzgebietModel::getAll()); $this->layout()->set("my_adb_networks", $my_adb_networks); - //var_dump($addressdb_filter);exit; - //var_dump($addressdb_filter);exit; - if($filter['netzgebiet_id'] === "null") { + + if(array_key_exists("netzgebiet_id", $filter) && $filter['netzgebiet_id'] === "null") { $addressdb_filter['netzgebiet_id'] = 0; $pagination['maxItems'] = ADBHausnummerModel::count($addressdb_filter); $addresses = ADBHausnummerModel::search($addressdb_filter, $pagination); diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php index 1f4501624..912301570 100644 --- a/application/Api/v1/AddressdbApicontroller.php +++ b/application/Api/v1/AddressdbApicontroller.php @@ -388,6 +388,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { if(count($this->filter_salescluster_ids)) { $where .= " AND netzgebiet_id IN (".implode(",", $this->filter_salescluster_ids).")"; } + $where .= " AND Hausnummer.visibility='public'"; $sql = AddressDB::$wohneinheit_query; $sql .= "\n WHERE $where AND ((".implode(" OR ", $ort_search).") OR (".implode(" OR ", $strasse_search).") OR (".implode(" OR ", $plz_search).") OR (".implode(" OR ", $hausnummer_search).")) ORDER BY strasse, LENGTH(hausnummer), hausnummer, LENGTH(`Wohneinheit`.tuer),`Wohneinheit`.tuer, zusatz, LENGTH(num), num"; @@ -676,6 +677,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { if($search_cluster_id) { $where .= " AND Netzgebiet.extref='$search_cluster_id'"; } + $where .= " AND Hausnummer.visibility='public'"; //echo $where; //var_dump($this->filter_salescluster_ids);exit; diff --git a/db/migrations/20240208123321_hausnummer_add_visibility.php b/db/migrations/20240208123321_hausnummer_add_visibility.php new file mode 100644 index 000000000..250094c08 --- /dev/null +++ b/db/migrations/20240208123321_hausnummer_add_visibility.php @@ -0,0 +1,32 @@ +getEnvironment() == "thetool") { + + } + + if($this->getEnvironment() == "addressdb") { + $table = $this->table("Hausnummer"); + $table->addColumn("visibility", "enum", ["null" => false, "values" => "public,private,none", "default" => "public", "after" => "freigabe"]); + $table->addIndex("visibility"); + $table->update(); + } + } + + public function down(): void + { + if($this->getEnvironment() == "thetool") { + + } + + if($this->getEnvironment() == "addressdb") { + $this->table("Hausnummer")->removeColumn("visibility")->save(); + } + } +} diff --git a/db/migrations/20240208151159_hausnummer_add_borderpoint_lat_long.php b/db/migrations/20240208151159_hausnummer_add_borderpoint_lat_long.php new file mode 100644 index 000000000..c3f67302b --- /dev/null +++ b/db/migrations/20240208151159_hausnummer_add_borderpoint_lat_long.php @@ -0,0 +1,39 @@ +getEnvironment() == "thetool") { + + } + + if($this->getEnvironment() == "addressdb") { + $table = $this->table("Hausnummer"); + $table->addColumn("borderpoint_lat", "decimal",["null" => true, "default" => null, "precision" => 15, "scale" => 10, "after" => "gps_long"]); + $table->addColumn("borderpoint_long", "decimal", ["null" => true, "default" => null, "precision" => 15, "scale" => 10, "after" => "borderpoint_lat"]); + $table->addColumn("trenches", "json", ["null" => true, "default" => null, "after" => "borderpoint_long"]); + $table->addColumn("home_trench", "json", ["null" => true, "default" => null, "after" => "trenches"]); + $table->save(); + } + } + + public function down(): void + { + if($this->getEnvironment() == "thetool") { + + } + + if($this->getEnvironment() == "addressdb") { + $table = $this->table("home_trench"); + $table->removeColumn("home_trench"); + $table->removeColumn("trenches"); + $table->removeColumn("borderpoint_long"); + $table->removeColumn("borderpoint_lat"); + $table->save(); + } + } +} diff --git a/scripts/adb-rimo-import/ADBAddressHelper/Network/Network-62383-mureck.php b/scripts/adb-rimo-import/ADBAddressHelper/Network/Network-62383-mureck.php new file mode 100644 index 000000000..cf4af46e8 --- /dev/null +++ b/scripts/adb-rimo-import/ADBAddressHelper/Network/Network-62383-mureck.php @@ -0,0 +1,35 @@ + 1) { } } +//$netowners = ["estmk", "rml"]; +$netowners = ["estmk"]; -foreach(["estmk", "rml"] as $apiOwner) { +foreach($netowners as $apiOwner) { $apiEdition = "prod"; $apiData = TT_RIMO_API_CREDS[$apiOwner][$apiEdition]; @@ -54,6 +56,7 @@ foreach(["estmk", "rml"] as $apiOwner) { $epGetBuildings = $apiUrl.RIMO_API_JSON_EP_GET_BUILDINGS; $epGetWorkorders = $apiUrl.RIMO_API_JSON_EP_QUERY_WORKORDERS; $epGetService = $apiUrl.RIMO_API_JSON_EP_QUERY_SERVICE; + $epGetGeoJsonForBuilding = $apiUrl.RIMO_API_JSON_EP_GET_JSON_FOR_BUILDING; $import_count = 0; @@ -113,10 +116,10 @@ foreach(["estmk", "rml"] as $apiOwner) { } - /*if($cluster_rimo_id != "SDISalesCluster_126657212929_1678961358") { - // prem sued + if($cluster_rimo_id != "SDISalesCluster_85942336257_1707118316") { + // wettmannstaettten continue; - }*/ + } $AddressHelper = new ADBAddressHelper\AddressHelper(["log" => $log, "db" => $adb, "netzgebiet" => $adb_netzgebiet]); @@ -362,7 +365,10 @@ foreach(["estmk", "rml"] as $apiOwner) { } - // get workorders + /* + * get workorders + */ + $params = $baseParams; $params["buildingId"] = $rimo_building_id; $qs = http_build_query($params); @@ -418,7 +424,82 @@ foreach(["estmk", "rml"] as $apiOwner) { } } } - + + /* + * Get Geodata + */ + $params = $baseParams; + $params["buildingId"] = $rimo_building_id; + $qs = http_build_query($params); + + $req_url = $epGetGeoJsonForBuilding."?".$qs; + $req_ctx = stream_context_create($ctxOptsGet); + + //echo $req_url."\n"; + $responseText = file_get_contents($req_url, false, $req_ctx); + + if($responseText === false) { + //echo "Error fetching Workorders for building $rimo_building_id\n"; + continue; + } + + $geodataResponse = json_decode($responseText); + + //print_r($geodataResponse);exit; + + if(is_object($geodataResponse)) { + if(property_exists($geodataResponse, "homeSection")) { + if(property_exists($geodataResponse->homeSection, "features") && is_array($geodataResponse->homeSection->features)) { + foreach($geodataResponse->homeSection->features as $feature) { + $home_trench = []; + foreach($feature->geometry->coordinates as $coords) { + $long = $coords[0]; + $lat = $coords[1]; + $home_trench[] = [$lat, $long]; + } + if($hausnummer->home_trench != $home_trench) { + $hausnummer->home_trench = json_encode($home_trench); + $hausnummer->save(); + } + + } + } + } + if(property_exists($geodataResponse, "borderPoint")) { + if(property_exists($geodataResponse->borderPoint, "features") && is_array($geodataResponse->borderPoint->features)) { + foreach($geodataResponse->borderPoint->features as $feature) { + $coords = $feature->geometry->coordinates; + //var_dump($coords);exit; + $long = $coords[0]; + $lat = $coords[1]; + if($hausnummer->borderpoint_lat != $lat || $hausnummer->borderpoint_long != $long) { + $hausnummer->borderpoint_lat = $lat; + $hausnummer->borderpoint_long = $long; + $hausnummer->save(); + } + } + } + } + if(property_exists($geodataResponse, "trenches") && $geodataResponse->trenches->features) { + $trenches = []; + foreach($geodataResponse->trenches->features as $feature) { + $feature_coords = []; + //var_dump($feature->geometry->coordinates);exit; + foreach($feature->geometry->coordinates as $coords) { + $long = $coords[0]; + $lat = $coords[1]; + $feature_coords[] = [$lat, $long]; + } + $trenches[] = $feature_coords; + } + if(count($trenches)) { + //var_dump($trenches);exit; + $hausnummer->trenches = json_encode($trenches); + $hausnummer->save(); + } + + } + } } echo "Cluster $cluster_rimo_id ($cluster_name): $hausnummer_count Buildings; $hausnummer_found_count Buildings verarbeitet; $homes_count Homes verarbeitet.\n"; }