diff --git a/Layout/default/Network/Index.php b/Layout/default/Network/Index.php
index 9eff8e677..7589b6441 100644
--- a/Layout/default/Network/Index.php
+++ b/Layout/default/Network/Index.php
@@ -65,6 +65,7 @@
Berechtigungen
@@ -260,6 +293,11 @@
//window.location.hash = "";
+ function deleteSection(id) {
+ if(!confirm('Bauabschnitt wirklich löschen?')) return false;
+
+ window.location="=self::getUrl("Networksection","delete")?>/" + id;
+ }
\ No newline at end of file
diff --git a/application/Network/Network.php b/application/Network/Network.php
index b39160015..286eb9130 100644
--- a/application/Network/Network.php
+++ b/application/Network/Network.php
@@ -5,6 +5,7 @@ class Network extends mfBaseModel {
private $pops;
private $addresstypes;
private $roles;
+ private $sections;
public function loadAddresstypes() {
if(!$this->id) {
@@ -53,6 +54,15 @@ class Network extends mfBaseModel {
}
}
+ if($name == "sections") {
+ if($this->id) {
+ $this->sections = NetworksectionModel::search(['network_id' => $this->id]);
+ return $this->sections;
+ } else {
+ return null;
+ }
+ }
+
$classname = ucfirst($name);
$idfield = $name."_id";
$this->$name = new $classname($this->$idfield);
diff --git a/application/Networksection/Networksection.php b/application/Networksection/Networksection.php
new file mode 100644
index 000000000..83cd67cf1
--- /dev/null
+++ b/application/Networksection/Networksection.php
@@ -0,0 +1,22 @@
+$name == null) {
+
+ $classname = ucfirst($name);
+ $idfield = $name."_id";
+ $this->$name = new $classname($this->$idfield);
+
+ if($this->$name->id) {
+ return $this->$name;
+ } else {
+ return null;
+ }
+ }
+
+ return $this->$name;
+ }
+}
\ No newline at end of file
diff --git a/application/Networksection/NetworksectionController.php b/application/Networksection/NetworksectionController.php
new file mode 100644
index 000000000..7dc9da5f0
--- /dev/null
+++ b/application/Networksection/NetworksectionController.php
@@ -0,0 +1,64 @@
+request;
+ //var_dump($r);exit;
+ if(!$r->network_id) {
+ $this->layout()->setFlash("Netzgebiet nicht gefunden", "error");
+ $this->redirect("Network", "Index");
+ }
+
+ $network_id = $r->network_id;
+ $network = new Network($network_id);
+ if(!$network->id) {
+ $this->layout()->setFlash("Netzgebiet nicht gefunden", "error");
+ $this->redirect("Network", "Index");
+ }
+
+ $sections = $r->sections;
+
+ if(!is_array($sections) || !count($sections)) {
+ $this->redirect("Network", "Index", [], "view=sections&net=".$network_id);
+
+
+ }
+ //var_dump($sections);exit;
+
+ foreach($sections as $section_id => $name) {
+ if($section_id == "new") {
+ $section = NetworksectionModel::create(["network_id" => $network_id, "name" => $name]);
+ //var_dump($section);exit;
+ $section->save();
+ }
+ }
+
+ $this->redirect("Network", "Index", [], "view=sections&net=".$network_id);
+
+ }
+
+ protected function deleteAction() {
+ $id = $this->request->id;
+
+ if(!is_numeric($id) || !$id) {
+ $this->layout()->setFlash("Bauabschnitt nicht gefunden", "error");
+ $this->redirect("Network", "Index");
+ }
+
+ $section = new Networksection($id);
+ if(!$section->id) {
+ $this->layout()->setFlash("Bauabschnitt nicht gefunden", "error");
+ $this->redirect("Network", "Index");
+ }
+
+
+
+ $network_id = $section->network_id;
+
+ $section->delete();
+
+ $this->layout()->setFlash("Bauabschnitt gelöscht", "success");
+ $this->redirect("Network", "Index", [], "view=sections&net=".$network_id);
+ }
+}
\ No newline at end of file
diff --git a/application/Networksection/NetworksectionModel.php b/application/Networksection/NetworksectionModel.php
new file mode 100644
index 000000000..f3b4c0b8b
--- /dev/null
+++ b/application/Networksection/NetworksectionModel.php
@@ -0,0 +1,121 @@
+ $value) {
+ if(property_exists(get_called_class(), $field)) {
+ $model->$field = $value;
+ }
+ }
+
+ $me = new User();
+ $me->loadMe();
+
+ if($model->create_by === null) {
+ $model->create_by = $me->id;
+ }
+ if($model->edit_by === null) {
+ $model->edit_by = $me->id;
+ }
+
+ return $model;
+ }
+
+ public static function getOne($id) {
+ if(!is_numeric($id) || !$id) {
+ throw new Exception("Invalid number", 400);
+ }
+ $item = [];
+ $db = FronkDB::singleton();
+
+ $res = $db->select("Networksection", "*", "id=$id LIMIT 1");
+ if($db->num_rows($res)) {
+ $data = $db->fetch_object($res);
+ $item = new Networksection($data);
+ }
+ return $item;
+ }
+
+ public static function getAll() {
+ $items = [];
+
+ $db = FronkDB::singleton();
+
+ $res = $db->select("Networksection", "*");
+ if($db->num_rows($res)) {
+ while($data = $db->fetch_object($res)) {
+ $items[] = new Networksection($data);
+ }
+ }
+ return $items;
+
+ }
+
+ public static function getFirst($filter) {
+ $db = FronkDB::singleton();
+
+ $where = self::getSqlFilter($filter);
+ $res = $db->select("Networksection", "*", "$where ORDER BY network_id, name");
+ if($db->num_rows($res)) {
+ $data = $db->fetch_object($res);
+ $item = new Networksection($data);
+ if($item->id) {
+ return $item;
+ } else {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ public static function search($filter) {
+ $items = [];
+ $db = FronkDB::singleton();
+
+ $where = self::getSqlFilter($filter);
+ $res = $db->select("Networksection", "*", "$where ORDER BY network_id, name");
+ if($db->num_rows($res)) {
+ while($data = $db->fetch_object($res)) {
+ $items[] = new Networksection($data);
+ }
+ }
+ return $items;
+ }
+
+ private function getSqlFilter($filter) {
+ $where = "1=1 ";
+
+ //var_dump($filter);exit;
+ if(array_key_exists("network_id", $filter)) {
+ $networkid = $filter['network_id'];
+ if(is_numeric($networkid)) {
+ $where .= " AND network_id=$networkid";
+ }
+ }
+
+ if(array_key_exists("name", $filter)) {
+ $name = FronkDB::singleton()->escape($filter['name']);
+ if($name) {
+ $where .= " AND name='$name'";
+ }
+ }
+
+ //var_dump($filter, $where);exit;
+ return $where;
+ }
+
+}
\ No newline at end of file
diff --git a/application/Pop/PopModel.php b/application/Pop/PopModel.php
index 5bf80e365..4d4166cd1 100644
--- a/application/Pop/PopModel.php
+++ b/application/Pop/PopModel.php
@@ -34,6 +34,16 @@ class PopModel {
}
}
+ $me = new User();
+ $me->loadMe();
+
+ if($model->create_by === null) {
+ $model->create_by = $me->id;
+ }
+ if($model->edit_by === null) {
+ $model->edit_by = $me->id;
+ }
+
return $model;
}
diff --git a/contrib/migrations/2021-07-20-networksection.sql b/contrib/migrations/2021-07-20-networksection.sql
new file mode 100644
index 000000000..cfc27541f
--- /dev/null
+++ b/contrib/migrations/2021-07-20-networksection.sql
@@ -0,0 +1,10 @@
+CREATE TABLE `Networksection` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `network_id` int(11) NOT NULL,
+ `name` varchar(1024) COLLATE utf8mb4_unicode_520_ci NOT NULL,
+ `create_by` int(11) NOT NULL,
+ `edit_by` int(11) NOT NULL,
+ `create` int(10) NOT NULL,
+ `edit` int(10) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
\ No newline at end of file