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");