Addedd CSV update for AddressDB Visibility and rimo id

This commit is contained in:
Frank Schubert
2024-07-26 13:29:33 +02:00
parent 1cff6f20bb
commit 40fc9da9af
3 changed files with 165 additions and 5 deletions

View File

@@ -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 .= "<br />$notfound Adressen nicht gefunden";
}
if($forbidden) {
$message .= "<br />$forbidden Adressen in falschem Netzgebiet";
}
if($nochange) {
$message .= "<br />$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");