WIP 2025-09-18
This commit is contained in:
@@ -33,8 +33,14 @@ class AddressDBController extends mfBaseController {
|
||||
}
|
||||
|
||||
$this->layout->set("filter", $filter);
|
||||
|
||||
if($this->me->is("Admin") && $this->request->submitBulkUpdate) {
|
||||
return $this->saveBulkupdateAction();
|
||||
}
|
||||
|
||||
|
||||
$filter = $this->getPreparedFilter($filter);
|
||||
|
||||
|
||||
// pagination defaults
|
||||
$pagination = [];
|
||||
$pagination['start'] = 0;
|
||||
@@ -777,6 +783,154 @@ class AddressDBController extends mfBaseController {
|
||||
}
|
||||
}*/
|
||||
|
||||
protected function saveBulkupdateAction() {
|
||||
if(!$this->me->is("Admin")) {
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
if(!$this->request->filter) {
|
||||
$this->layout()->setFlas("Filter erforderlich!");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
$filter = $this->getPreparedFilter($this->request->filter);
|
||||
$filter["netzgebiet_id"] = true;
|
||||
|
||||
//var_dump($this->request->get(), $filter);exit;
|
||||
|
||||
$update = [];
|
||||
|
||||
$ort_search = trim($this->request->ort);
|
||||
$gemeinde_search = trim($this->request->gemeinde);
|
||||
$plz_search = trim($this->request->plz);
|
||||
$strasse_search = trim($this->request->strasse);
|
||||
|
||||
$do_rimo_update = $this->request->request_rimo_update;
|
||||
|
||||
$i = 0;
|
||||
$u = 0;
|
||||
|
||||
if(ADBHausnummerModel::count($filter, true) > 1000) {
|
||||
$this->layout()->setFlas("Bissi viel auf einmal");
|
||||
}
|
||||
|
||||
$cache = [];
|
||||
$cache["gemeinde"] = [];
|
||||
$cache["ort"] = [];
|
||||
$cache["plz"] = [];
|
||||
$cache["strasse"] = [];
|
||||
|
||||
foreach(ADBHausnummerModel::search($filter) as $hausnummer) {
|
||||
$updated = false;
|
||||
$netzgebiet_id = $hausnummer->netzgebiet_id;
|
||||
if(!$netzgebiet_id) {
|
||||
$this->layout()->setFlash("Netzgebiet nicht gefunden??", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
$gemeinde_id = $hausnummer->strasse->gemeinde_id;
|
||||
if(!$gemeinde_id) {
|
||||
$this->layout()->setFlash("Strasse '{$hausnummer->strasse->name}' ({$hausnummer->strasse_id}) hat keine Gemeinde...", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
|
||||
/*if(array_key_exists("$gemeinde_search-$netzgebiet_id", $cache["gemeinde"])) {
|
||||
$gemeinde = $cache["gemeinde"]["$gemeinde_search-$netzgebiet_id"];
|
||||
} else {
|
||||
$gemeinde = ADBGemeindeModel::getFirst(['name' => $gemeinde_search, 'netzgebiet_id' => $netzgebiet_id]);
|
||||
$cache["gemeinde"]["$gemeinde_search-$netzgebiet_id"] = $gemeinde;
|
||||
}*/
|
||||
if(array_key_exists($gemeinde_id, $cache["gemeinde"])) {
|
||||
$gemeinde = $cache["gemeinde"][$gemeinde_id];
|
||||
} else {
|
||||
$gemeinde = new ADBGemeinde($gemeinde_id);
|
||||
}
|
||||
if(!$gemeinde) {
|
||||
$this->layout()->setFlash("Gemeinde $gemeinde_id nicht in AdressDB gefunden", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
if($ort_search) {
|
||||
if(array_key_exists("$ort_search-$netzgebiet_id", $cache["ort"])) {
|
||||
$ort = $cache["ort"]["$ort_search-$netzgebiet_id"];
|
||||
} else {
|
||||
$ort = ADBOrtschaftModel::getFirst(['name' => $ort_search, 'netzgebiet_id' => $netzgebiet_id]);
|
||||
$cache["ort"]["$ort_search-$netzgebiet_id"] = $ort;
|
||||
}
|
||||
if(!$ort) {
|
||||
$this->layout()->setFlash("Ortschaft '$ort_search' nicht in AdressDB gefunden", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
}
|
||||
|
||||
if($plz_search) {
|
||||
if(array_key_exists("$plz_search-$gemeinde_id", $cache["plz"])) {
|
||||
$plz = $cache["plz"]["$plz_search-$gemeinde_id"];
|
||||
} else {
|
||||
$plz = ADBPlzModel::getFirst(['plz' => $plz_search, 'gemeinde_id' => $gemeinde->id]);
|
||||
$cache["plz"]["$plz_search-$gemeinde_id"] = $plz;
|
||||
}
|
||||
if(!$plz) {
|
||||
$this->layout()->setFlash("PLZ '$plz_search' nicht in AdressDB gefunden", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
}
|
||||
|
||||
if($strasse_search) {
|
||||
if(array_key_exists("$strasse_search-$gemeinde_id", $cache["strasse"])) {
|
||||
$strasse = $cache["strasse"]["$strasse_search-$gemeinde_id"];
|
||||
} else {
|
||||
$strasse = ADBStrasseModel::getFirst(['name' => $strasse_search, 'gemeinde_id' => $gemeinde->id]);
|
||||
$cache["strasse"]["$strasse_search-$gemeinde_id"] = $strasse;
|
||||
}
|
||||
if(!$strasse) {
|
||||
$this->log->debug(__METHOD__ . ": create street '$strasse_search' in gemeinde {$gemeinde->name}");
|
||||
$strasse = ADBStrasseModel::create([
|
||||
'gemeinde_id' => $gemeinde->id,
|
||||
'name' => $strasse_search
|
||||
]);
|
||||
|
||||
if(!$strasse->save()) {
|
||||
$this->layout()->setFlash("Fehler beim Speichern der neuen Straße", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
$cache["strasse"]["$strasse_search-$gemeinde_id"] = $strasse;
|
||||
}
|
||||
}
|
||||
|
||||
//$hausnummer->gemeinde_id = $gemeinde->id;
|
||||
if($ort_search && $hausnummer->ortschaft_id != $ort->id) {
|
||||
$hausnummer->ortschaft_id = $ort->id;
|
||||
$updated = true;
|
||||
}
|
||||
if($strasse_search && $hausnummer->strasse_id != $strasse->id) {
|
||||
$hausnummer->strasse_id = $strasse->id;
|
||||
$updated = true;
|
||||
}
|
||||
if($plz_search && $hausnummer->plz != $plz->id) {
|
||||
$hausnummer->plz_id = $plz->id;
|
||||
$updated = true;
|
||||
}
|
||||
|
||||
if($updated) {
|
||||
$hausnummer->save(["no_aftersave" => true]);
|
||||
if($do_rimo_update) {
|
||||
$hausnummer->updateAddressInRimo();
|
||||
}
|
||||
$u++;
|
||||
}
|
||||
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
$this->layout()->setFlash("Bulk Update erfolgreich. $u/$i Adressen updated.", "success");
|
||||
$this->redirect("AddressDB");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected function apiAction() {
|
||||
if(!$this->me->is(["Admin","netowner"]) && !$this->me->can("Preorder")) {
|
||||
|
||||
Reference in New Issue
Block a user