From b6f3f94bce425bd9e59bafdc42ebf095cb94f423 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Tue, 14 Sep 2021 23:24:33 +0200 Subject: [PATCH] Added termination status filter to Order --- Layout/default/Order/Index.php | 10 ++-- Layout/default/menu.php | 2 +- application/Order/OrderController.php | 14 +++++ application/Order/OrderModel.php | 59 +++++++++++++++++++++ application/Pipework/PipeworkController.php | 5 +- 5 files changed, 82 insertions(+), 8 deletions(-) diff --git a/Layout/default/Order/Index.php b/Layout/default/Order/Index.php index 62974f50c..6eb68b388 100644 --- a/Layout/default/Order/Index.php +++ b/Layout/default/Order/Index.php @@ -52,12 +52,12 @@
- - - - - + + +
diff --git a/Layout/default/menu.php b/Layout/default/menu.php index 216983245..0addfa0c5 100644 --- a/Layout/default/menu.php +++ b/Layout/default/menu.php @@ -36,7 +36,7 @@ Netzbau
diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php index 11b4defa1..a54113855 100644 --- a/application/Order/OrderController.php +++ b/application/Order/OrderController.php @@ -129,6 +129,20 @@ class OrderController extends mfBaseController { } } + if(array_key_exists("termination_status", $filter)) { + $status = $filter['termination_status']; + if($status == "term_connected") { + $new_filter["termination_status_code"] = ">=".TT_TERMSTATUS_CONNECTED; + } + if($status == "building_connected") { + $new_filter["building_status_code"] = ">=".TT_BUILDINGSTATUS_CONNECTED; + } + if($status == "pipework_needed") { + $new_filter["building_status_code"] = "<".TT_BUILDINGSTATUS_CONNECTED; + } + + } + foreach($filter as $name => $value) { $new_filter[$name] = $value; } diff --git a/application/Order/OrderModel.php b/application/Order/OrderModel.php index 7282d2728..0752af294 100644 --- a/application/Order/OrderModel.php +++ b/application/Order/OrderModel.php @@ -149,6 +149,8 @@ class OrderModel { LEFT JOIN Product ON (Product.id = OrderProduct.product_id) LEFT JOIN Termination ON (Termination.id = OrderProduct.termination_id) LEFT JOIN Building ON (Building.id = Termination.building_id) + LEFT JOIN Terminationstatus ON (Terminationstatus.id = Termination.status_id) + LEFT JOIN Buildingstatus ON (Buildingstatus.id = Building.status_id) WHERE $where GROUP BY `Order`.id) as o"; @@ -177,6 +179,9 @@ class OrderModel { LEFT JOIN Product ON (Product.id = OrderProduct.product_id) LEFT JOIN Termination ON (Termination.id = OrderProduct.termination_id) LEFT JOIN Building ON (Building.id = Termination.building_id) + LEFT JOIN Terminationstatus ON (Terminationstatus.id = Termination.status_id) + LEFT JOIN Buildingstatus ON (Buildingstatus.id = Building.status_id) + WHERE $where GROUP BY `Order`.id ORDER BY `Order`.order_date ASC"; @@ -284,6 +289,60 @@ class OrderModel { $where .= " AND Building.street LIKE '%$street%'"; } } + var_dump($filter['building_status_code']); + if(array_key_exists("building_status_code", $filter)) { + if(in_array(substr($filter['building_status_code'], 0, 2), ["<=", ">="])) { + $op = substr($filter['building_status_code'], 0, 2); + $status = substr($filter['building_status_code'], 2); + } elseif(in_array(substr($filter['building_status_code'], 0, 1), ["<", ">"])) { + $op = substr($filter['building_status_code'], 0, 1); + $status = substr($filter['building_status_code'], 1); + } else { + $op = "="; + $status = $filter['building_status_code']; + } + + //var_dump($op, $status);exit; + + if(is_numeric($status)) { + $where .= " AND Buildingstatus.code $op $status"; + } else { + // get code of statusname + $code = BuildingstatusModel::getOne(["name" => $status]); + if($code) { + $status = FronkDB::singleton()->escape($status); + $where .= " AND Buildingstatus.code $op '$status'"; + } + + } + } + //var_dump($filter['termination_status_code']); + if(array_key_exists("termination_status_code", $filter)) { + if(in_array(substr($filter['termination_status_code'], 0, 2), ["<=", ">="])) { + $op = substr($filter['termination_status_code'], 0, 2); + $status = substr($filter['termination_status_code'], 2); + } elseif(in_array(substr($filter['termination_status_code'], 0, 1), ["<", ">"])) { + $op = substr($filter['termination_status_code'], 0, 1); + $status = substr($filter['termination_status_code'], 1); + } else { + $op = "="; + $status = $filter['termination_status_code']; + } + + //var_dump($op, $status);exit; + + if(is_numeric($status)) { + $where .= " AND Terminationstatus.code $op $status"; + } else { + // get code of statusname + $code = TerminationstatusModel::getOne(["name" => $status]); + if($code) { + $status = FronkDB::singleton()->escape($status); + $where .= " AND Terminationstatus.code $op '$status'"; + } + + } + } //var_dump($filter, $where);exit; return $where; diff --git a/application/Pipework/PipeworkController.php b/application/Pipework/PipeworkController.php index 7db55bbb6..bec4425e9 100644 --- a/application/Pipework/PipeworkController.php +++ b/application/Pipework/PipeworkController.php @@ -9,14 +9,15 @@ class PipeworkController extends mfBaseController { $this->me = $me; $this->layout()->set("me",$me); - if(!$me->is(["Admin", "netowner", "pipeplanner", "pipeworker"])) { + if(!$me->is(["Admin", "netowner", "pipeplanner", "pipeworker", "lineplanner", "lineworker"])) { $this->redirect("Dashboard"); } } protected function indexAction() { $this->layout()->setTemplate("Pipework/Index"); - + + $filter = []; $this->layout->set("filter", $this->request->filter); if($this->request->filter) { $filter = $this->getPreparedFilter($this->request->filter);