Added admin workorder filter in order and in network

This commit is contained in:
Frank Schubert
2021-11-16 23:07:12 +01:00
parent 075fe1532f
commit a2f454fc5c
6 changed files with 113 additions and 53 deletions
+63 -52
View File
@@ -103,7 +103,7 @@ class OrderController extends mfBaseController {
$order_search[$name] = $value;
}
}
//var_dump($order_search);exit;
$pagination['maxItems'] = OrderModel::count($order_search);
foreach(OrderModel::search($order_search, $pagination) as $order) {
if(!array_key_exists($order->id, $orders)) {
@@ -111,65 +111,67 @@ class OrderController extends mfBaseController {
}
}
$lonelyOrders = [];
unset($order_search["network_id"]);
$order_search['product_id'] = null;
// orders without a product
if($this->me->isAdmin()) {
if(!$this->request->filter['network_id']) {
$lonelies = OrderModel::search($order_search);
}
} else {
$order_search['create_by'] = $this->me->id;
$lonelies = OrderModel::search($order_search);
}
foreach($lonelies as $order) {
if(!array_key_exists($order->id, $orders)) {
$lonelyOrders[$order->id] = $order;
}
}
// orders with termination product not requiring termination_id
$order_search['product_id'] = ">0";
$order_search['termination_id'] = null;
if($this->me->isAdmin()) {
if(!$this->request->filter['network_id']) {
$lonelies = OrderModel::search($order_search);
}
} else {
$order_search['create_by'] = $this->me->id;
$lonelies = OrderModel::search($order_search);
}
foreach($lonelies as $order) {
if(!array_key_exists($order->id, $orders)) {
$o = new Order($order->id);
$add = true;
foreach($o->products as $p) {
$attribs = $p->product->attributes;
if(is_array($attribs) && count($attribs)) {
if(array_key_exists(TT_ATTRIB_TERMINATION_REQUIRED_NAME, $attribs)
&& $attribs[TT_ATTRIB_TERMINATION_REQUIRED_NAME]->value == 1) {
//$this->log->debug("found additional order where termination_required 0");
//$lonelyOrders[$order->id] = $order;
$add = false;
break;
}
} else {
$add = true;
}
if(!array_key_exists("network_linked_status", $order_search)) {
$lonelyOrders = [];
unset($order_search["network_id"]);
$order_search['product_id'] = null;
// orders without a product
if($this->me->isAdmin()) {
if(!$this->request->filter['network_id']) {
$lonelies = OrderModel::search($order_search);
}
if($add) {
} else {
$order_search['create_by'] = $this->me->id;
$lonelies = OrderModel::search($order_search);
}
foreach($lonelies as $order) {
if(!array_key_exists($order->id, $orders)) {
$lonelyOrders[$order->id] = $order;
}
//$lonelyOrders[$order->id] = $order;
}
// orders with termination product not requiring termination_id
$order_search['product_id'] = ">0";
$order_search['termination_id'] = null;
if($this->me->isAdmin()) {
if(!$this->request->filter['network_id']) {
$lonelies = OrderModel::search($order_search);
}
} else {
$order_search['create_by'] = $this->me->id;
$lonelies = OrderModel::search($order_search);
}
foreach($lonelies as $order) {
if(!array_key_exists($order->id, $orders)) {
$o = new Order($order->id);
$add = true;
foreach($o->products as $p) {
$attribs = $p->product->attributes;
if(is_array($attribs) && count($attribs)) {
if(array_key_exists(TT_ATTRIB_TERMINATION_REQUIRED_NAME, $attribs)
&& $attribs[TT_ATTRIB_TERMINATION_REQUIRED_NAME]->value == 1) {
//$this->log->debug("found additional order where termination_required 0");
//$lonelyOrders[$order->id] = $order;
$add = false;
break;
}
} else {
$add = true;
}
}
if($add) {
$lonelyOrders[$order->id] = $order;
}
//$lonelyOrders[$order->id] = $order;
}
}
$this->layout()->set("lonelyOrders", $lonelyOrders);
}
$this->layout()->set("orders", $orders);
$this->layout()->set("lonelyOrders", $lonelyOrders);
$this->layout()->set("pagination", $pagination);
}
@@ -192,9 +194,18 @@ class OrderController extends mfBaseController {
}
if($status == "building_connected") {
$new_filter["building_status_code"] = ">=".TT_BUILDINGSTATUS_CONNECTED;
$new_filter["termination_status_code"] = "<".TT_TERMSTATUS_CONNECTED;
}
if($status == "pipework_needed") {
$new_filter["building_status_code"] = "<".TT_BUILDINGSTATUS_CONNECTED;
$new_filter["termination_status_code"] = "<".TT_TERMSTATUS_CONNECTED;
}
if($status == "systemowner_action_status" && $this->me->is("Admin")) {
$new_filter['network_linked_status'] = [];
foreach(NetworkModel::getAll() as $network) {
$new_filter['network_linked_status'][$network->id] = $network->sytemowner_action_status;
}
}
}
+28 -1
View File
@@ -319,7 +319,34 @@ class OrderModel {
if(is_numeric($network_id)) {
$where .= " AND Building.network_id=$network_id";
} elseif(is_array($network_id)) {
$where .= " AND Building.network_id IN (". implode(",", $network_id).")";
//var_dump($filter);exit;
//var_dump($network_id);exit;
if(array_key_exists("network_linked_status", $filter)) {
$status_parts = [];
foreach($network_id as $net_id) {
if(!is_numeric($net_id)) {
continue;
}
if(array_key_exists($net_id, $filter['network_linked_status'])) {
if($filter['network_linked_status'][$net_id] == "term_connected") {
$status_parts[] = "(Building.network_id = $net_id AND Terminationstatus.code >= ".TT_TERMSTATUS_CONNECTED.")";
}
if($filter['network_linked_status'][$net_id] == "building_connected") {
$status_parts[] = "(Building.network_id = $net_id AND Buildingstatus.code >= ".TT_BUILDINGSTATUS_CONNECTED.")";
}
if($filter['network_linked_status'][$net_id] == "pipework_needed") {
$status_parts[] = "(Building.network_id = $net_id AND Buildingstatus.code <= ".TT_BUILDINGSTATUS_CONNECTED.")";
}
}
}
if(count($status_parts)) {
$where .= " AND (".implode(" OR ", $status_parts).")";
}
} else {
// just search for networks
$where .= " AND Building.network_id IN (". implode(",", $network_id).")";
}
}
}