diff --git a/Layout/default/AddressDB/ExternalIdVisivilityUpdate.php b/Layout/default/AddressDB/ExternalIdVisivilityUpdate.php new file mode 100644 index 000000000..bf3886a06 --- /dev/null +++ b/Layout/default/AddressDB/ExternalIdVisivilityUpdate.php @@ -0,0 +1,68 @@ + + + +
+
+
+
+ +
+

Sichtbarkeit / Rimo ID Update importieren

+
+
+
+ + +
+
+ +
+
+

Sichtbarkeit / Rimo ID Update importieren

+ +
" enctype="multipart/form-data"> +
+
+ +
+ +
+ + Format:
+ AddressDB ID;Sichtbarkeit;Rimo External ID
+ 1769916;public;SDIBuilding_874840562177_1645721555
+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+
+ + + diff --git a/Layout/default/AddressDB/Index.php b/Layout/default/AddressDB/Index.php index 761b3c57a..b307dda3f 100644 --- a/Layout/default/AddressDB/Index.php +++ b/Layout/default/AddressDB/Index.php @@ -146,9 +146,14 @@ - - - + username == "fronk" || $me->username == "r.eschner@rmlinfrastruktur.at"): ?> +
+
+ "> Sichtbarkeit / Rimo ID Update +
+
+ +
diff --git a/application/AddressDB/AddressDBController.php b/application/AddressDB/AddressDBController.php index 13efe5343..82bbacfa4 100644 --- a/application/AddressDB/AddressDBController.php +++ b/application/AddressDB/AddressDBController.php @@ -162,7 +162,7 @@ class AddressDBController extends mfBaseController { } if(array_key_exists("visibility", $filter) && $filter['visibility']) { - $new_filter['visibility'] = $filter['visbility']; + $new_filter['visibility'] = $filter['visibility']; } else { $new_filter["visibility"] = ["public", "private"]; unset($filter['visibility']); @@ -443,7 +443,94 @@ class AddressDBController extends mfBaseController { } - + + + protected function updateVisibilityExternalIdAction() { + $this->layout()->setTemplate("AddressDB/ExternalIdVisivilityUpdate"); + } + + protected function saveVisibilityExternalIdAction() { + $headline_included = $this->request->headline; + + if(is_array($_FILES) && array_key_exists("visibilityupdate_csv", $_FILES) && !$_FILES['visibilityupdate_csv']['error']) { + // look for uploaded import file + try { + // returns File object or throws Exception on error + $file = mfUpload::handleFormUpload("visibilityupdate_csv"); + } catch(Exception $ex) { + $this->layout()->setFlash("Fehler beim Dateiupload: " . $ex->getMessage(), "error"); + $this->redirect("AddressDB", "updateVisibilityExternalId"); + } + + $i = 0; + $forbidden = 0; + $notfound = 0; + $nochange = 0; + $saved = 0; + + $filename = $file->getFullPath(); + $input = fopen($filename, "r"); + while($csv = fgetcsv($input, 0, ";")) { + $i++; + if($i == 1 && $headline_included) continue; + + if(!trim($csv[0])) { + continue; + } + + $id = trim($csv[0]); + $visibility = trim($csv[1]); + $rimo_id = trim($csv[2]); + + $address = new ADBHausnummer($id); + if(!$address) { + $notfound++; + continue; + } + + $allowed_network = false; + foreach($this->me->myNetworks(["netowner", "salespartner"]) as $my_network) { + if($my_network->adb_netzgebiet_id == $address->netzgebiet_id) { + $allowed_network = true; + break; + } + } + if(!$allowed_network) { + $forbidden++; + continue; + } + + if($address->rimo_id != $rimo_id || $address->visibility != $visibility) { + $address->rimo_id = $rimo_id; + $address->visibility = $visibility; + $address->save(); + $saved++; + } else { + $nochange++; + } + + } + + $message = "Import erfolgreich. $saved/$i Adressen updated."; + if($notfound) { + $message .= "
$notfound Adressen nicht gefunden"; + } + if($forbidden) { + $message .= "
$forbidden Adressen in falschem Netzgebiet"; + } + if($nochange) { + $message .= "
$nochange Adressen ohne Änderung"; + } + $this->layout()->setFlash($message, "success"); + $this->redirect("AddressDB", "updateVisibilityExternalId"); + + } else { + $this->layout()->setFlash("Nichts importiert!", "info"); + $this->redirect("AddressDB", "updateVisibilityExternalId"); + } + } + + protected function apiAction() { if(!$this->me->is(["Admin","netowner"]) && !$this->me->can("Preorder")) { $this->redirect("Dashboard");