From aa624278b44a3b31eae23bd42c9308335c54076c Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Tue, 20 Jul 2021 21:54:23 +0200 Subject: [PATCH] Added Networksection --- Layout/default/Network/Index.php | 38 ++++++ application/Network/Network.php | 10 ++ application/Networksection/Networksection.php | 22 ++++ .../NetworksectionController.php | 64 +++++++++ .../Networksection/NetworksectionModel.php | 121 ++++++++++++++++++ application/Pop/PopModel.php | 10 ++ .../migrations/2021-07-20-networksection.sql | 10 ++ 7 files changed, 275 insertions(+) create mode 100644 application/Networksection/Networksection.php create mode 100644 application/Networksection/NetworksectionController.php create mode 100644 application/Networksection/NetworksectionModel.php create mode 100644 contrib/migrations/2021-07-20-networksection.sql 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 @@
@@ -123,6 +124,38 @@ $network->id])?>"> Neuen POP anlegen
+
+

Bauabschnitte in name?>

+
+
+
"> + + + + sections as $section): ?> + + 0 && $i % 3 == 0): ?> + + + + + + + +
+
+ +
+ +
+
+
+ +
+
+
+
+

Berechtigungen

@@ -260,6 +293,11 @@ //window.location.hash = ""; + function deleteSection(id) { + if(!confirm('Bauabschnitt wirklich löschen?')) return false; + + window.location="/" + 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