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

View File

@@ -49,7 +49,20 @@
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="sytemowner_action_status">Workorder Filter (Admins)</label>
<div class="col-lg-10">
<select class="select2 form-control " name="sytemowner_action_status" id="sytemowner_action_status">
<option></option>
<option value="pipework_needed" <?=($network->sytemowner_action_status == "pipework_needed") ? "selected='selected'" : ""?>>Tiefbau ausständig</option>
<option value="building_connected" <?=($network->sytemowner_action_status == "building_connected") ? "selected='selected'" : ""?>>Tiefbau erledigt</option>
<option value="term_connected" <?=($network->sytemowner_action_status == "term_connected") ? "selected='selected'" : ""?>>Anschluss passiv erschlossen</option>
</select>
</div>
</div>
</div>
</div>
<div class="card">

View File

@@ -25,6 +25,7 @@
<form method="get" action="<?=self::getUrl("Order")?>">
<div class="row">
<div class="col-1">
<label class="form-label" for="filter_network_id">Netzgebiet</label>
<select name="filter[network_id]" id="filter_network_id" class="form-control">
@@ -58,6 +59,7 @@
<option value="pipework_needed" <?=($filter['termination_status'] == "pipework_needed") ? "selected='selected'" : ""?>>Tiefbau ausständig</option>
<option value="building_connected" <?=($filter['termination_status'] == "building_connected") ? "selected='selected'" : ""?>>Tiefbau erledigt</option>
<option value="term_connected" <?=($filter['termination_status'] == "term_connected") ? "selected='selected'" : ""?>>Anschluss passiv erschlossen</option>
<?php if($me->is("Admin")): ?><option value="systemowner_action_status" <?=($filter['termination_status'] == "systemowner_action_status") ? "selected='selected'" : ""?>>Admin Workorder</option><?php endif; ?>
</select>
</div>

View File

@@ -76,6 +76,12 @@ class NetworkController extends mfBaseController {
$data['name'] = $r->name;
$data['note'] = $r->note;
if($r->sytemowner_action_status) {
$data['sytemowner_action_status'] = $r->sytemowner_action_status;
} else {
$data['sytemowner_action_status'] = null;
}
$data['edit_by'] = 1;
if($mode == "add") {

View File

@@ -3,6 +3,7 @@
class NetworkModel {
public $name = null;
public $owner_id = null;
public $sytemowner_action_status = null;
public $note = null;
public $create_by = null;

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;
}
}
}

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