diff --git a/application/ADBNetzgebiet/ADBNetzgebietController.php b/application/ADBNetzgebiet/ADBNetzgebietController.php index c4304dcd3..911f7c0ee 100644 --- a/application/ADBNetzgebiet/ADBNetzgebietController.php +++ b/application/ADBNetzgebiet/ADBNetzgebietController.php @@ -23,6 +23,7 @@ class ADBNetzgebietController extends mfBaseController { Helper::renderVue3($this, $this->mod, "Netzgebietverwaltung", [ "GET_URL" => $this::getUrl("ADBNetzgebiet/getNetzgebiete"), "SAVE_URL" => $this::getUrl("ADBNetzgebiet/save"), + "COPY_URL" => $this::getUrl("ADBNetzgebiet/copy"), "HISTORY_URL" => $this::getUrl("ADBNetzgebiet/getHistory"), "NETWORK_URL" => $this::getUrl("Network/Index"), "NETWORK_CREATE_URL" => $this::getUrl("Network/add"), @@ -130,6 +131,41 @@ class ADBNetzgebietController extends mfBaseController { self::returnJson(['success' => true, 'data' => $history]); } + protected function copyAction(): void { + $data = $this->postData; + if (empty($data['id'])) { + self::sendError("ID of the Netzgebiet to be copied is missing."); + return; + } + + $original = ADBNetzgebiet::get($data['id']); + if (!$original) { + self::sendError("Netzgebiet not found."); + return; + } + + $copy = new ADBNetzgebiet(); + $copy->name = null; + $copy->extref = null; + $copy->rimo_id = $original->rimo_id; + $copy->source = $original->source; + $copy->source_id = null; + $copy->borderpoly = $original->borderpoly; + $copy->freigabe = $original->freigabe; + $copy->options = $original->options; + + if (!$copy->save()) { + self::sendError("Failed to copy Netzgebiet."); + return; + } + + self::returnJson([ + 'success' => true, + 'message' => 'Netzgebiet copied.', + 'id' => $copy->getId() + ]); + } + // TODO: Implement RIMO API check protected function checkRimoSourceIdAction(): void { self::returnJson(['success' => false, 'message' => "RIMO API check not available."]); diff --git a/public/js/pages/ADBNetzgebiet/ADBNetzgebiet.js b/public/js/pages/ADBNetzgebiet/ADBNetzgebiet.js index b5bf1dda8..433eca40f 100644 --- a/public/js/pages/ADBNetzgebiet/ADBNetzgebiet.js +++ b/public/js/pages/ADBNetzgebiet/ADBNetzgebiet.js @@ -135,6 +135,7 @@ const ADBNetzgebiet = {