From 9a70044d7bfaa47c434d569be277d72369a52e34 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Thu, 2 Sep 2021 21:47:25 +0200 Subject: [PATCH] Added Filter to Object/Index --- Layout/default/Building/Index.php | 76 ++++++++++++++++++++ application/Building/BuildingController.php | 80 ++++++++++++++++++++- 2 files changed, 154 insertions(+), 2 deletions(-) diff --git a/Layout/default/Building/Index.php b/Layout/default/Building/Index.php index 37f1948c9..f771feca6 100644 --- a/Layout/default/Building/Index.php +++ b/Layout/default/Building/Index.php @@ -21,6 +21,82 @@
+
+
+

Filter

+ +
"> +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + + +
+
+
+ + ">Filter zurücksetzen +
+
+
+ +
+
+ +
diff --git a/application/Building/BuildingController.php b/application/Building/BuildingController.php index 325567a4c..1f31fd4ca 100644 --- a/application/Building/BuildingController.php +++ b/application/Building/BuildingController.php @@ -17,9 +17,66 @@ class BuildingController extends mfBaseController { protected function indexAction() { $this->layout()->setTemplate("Building/Index"); + $this->layout->set("filter", $this->request->filter); + + if($this->request->filter) { + $filter = $this->getPreparedFilter($this->request->filter); + } + + $my_networks = []; + if($this->me->is("Admin")) { - $this->layout()->set("buildings", BuildingModel::getAll()); + if($filter['network_id']) { + $my_networks[] = new Network($filter['network_id']); + } else { + $my_networks = NetworkModel::getAll(); + } + $this->layout()->set("mynetworks", NetworkModel::getAll()); + } else { + $use_filter_network = false; + $my_networks = $this->me->my_networks; + + foreach($my_networks as $mn) { + if($mn->id == $filter['network_id']) { + $use_filter_network = true; + continue; + } + } + + if($use_filter_network) { + $my_networks = []; + $my_networks[] = new Network($filter['network_id']); + } + + $this->layout()->set("mynetworks", $this->me->my_networks); + } + unset($filter['network_id']); + + // get Buildings in networks + $buildings = []; + foreach($my_networks as $network) { + $building_search = [ + "network_id" => $network->id, + "workflow_finished" => 0 + ]; + + if(is_array($filter) && count($filter)) { + foreach($filter as $name => $value) { + $building_search[$name] = $value; + } + } + + foreach(BuildingModel::search($building_search) as $b) { + if(!array_key_exists($b->id, $buildings)) { + $buildings[$b->id] = $b; + } + } + + + + + /* $buildings = []; foreach($this->me->my_networks as $network) { foreach(BuildingModel::search(["network_id" => $network->id]) as $b) { @@ -27,13 +84,32 @@ class BuildingController extends mfBaseController { $buildings[$b->id] = $b; } } - } + }*/ + + //var_dump($buildings);exit; $this->layout()->set("buildings", $buildings); } } + private function getPreparedFilter($filter) { + $new_filter = []; + + if(is_numeric($filter['networksection_id']) && $filter['networksection_id']) { + $section = new Networksection($filter['networksection_id']); + if($section->id) { + $filter['network_id'] = $section->network_id; + } + } + + foreach($filter as $name => $value) { + $new_filter[$name] = $value; + } + + return $new_filter; + } + protected function addAction() { $this->layout()->setTemplate("Building/Form");