Added extended search to Preorder Index

This commit is contained in:
Frank Schubert
2024-02-05 17:43:24 +01:00
parent 4c8d0e7509
commit 01f41c9eaa
4 changed files with 78 additions and 35 deletions

View File

@@ -105,18 +105,14 @@
<input type="text" class="form-control" name="filter[kunde]" id="filter_kunde" value="<?=$filter['kunde'] ?? ""?>" />
</div>
<div class="col-2">
<label class="form-label" for="filter_magic_search">erweiterte Suche</label>
<input type="text" class="form-control" name="filter[magic_search]" id="filter_magic_search" value="<?=$filter['magic_search'] ?? ""?>" />
</div>
</div>
<div class="row mt-2">
<div class="col-2">
<label class="form-label" for="filter_address_source">Adressherkunft</label>
<select name="filter[address_source]" id="filter_address_source" class="form-control">
<option value=""></option>
<option value="addressdb" <?=(isset($filter) && array_key_exists("address_source", $filter) && $filter['address_source'] == "addressdb") ? "selected='selected'" : ""?>>thetool AddressDB</option>
<option value="manual" <?=(isset($filter) && array_key_exists("address_source", $filter) && $filter['address_source'] == "manual") ? "selected='selected'" : ""?>>manuelle Eingabe</option>
</select>
</div>
<div class="col-1">
<label class="form-label" for="filter_unit_missing">Wohneinheit</label>
<select name="filter[unit_missing]" id="filter_unit_missing" class="form-control">
@@ -135,18 +131,8 @@
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_unit_count">Anzahl Wohneinheiten in GWR</label>
<select name="filter[unit_count]" id="filter_unit_count" class="form-control">
<option value=""></option>
<option value="0" <?=(isset($filter) && array_key_exists("unit_count", $filter) && strlen($filter['unit_count']) && intval($filter['unit_count']) === 0) ? "selected='selected'" : ""?>>0</option>
<option value="1" <?=(isset($filter) && array_key_exists("unit_count", $filter) && intval($filter['unit_count']) === 1) ? "selected='selected'" : ""?>>1</option>
<option value="2" <?=(isset($filter) && array_key_exists("unit_count", $filter) && intval($filter['unit_count']) === 2) ? "selected='selected'" : ""?>> &gt; 1</option>
</select>
</div>
<?php if($campaign->fulfillment == "rimo"): ?>
<div class="col-2">
<?php if((isset($campaign) && $campaign->fulfillment == "rimo") || !isset($campaign) || !$campaign->id): ?>
<div class="col-1">
<label class="form-label" for="filter_rimo_workorder">Rimo Workorder</label>
<select name="filter[rimo_workorder]" id="filter_rimo_workorder" class="form-control">
<option value=""></option>
@@ -155,6 +141,24 @@
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_rimo_workorder">Rimo Workorder Status</label>
<select name="filter[rimo_workorder_status]" id="filter_rimo_workorder_status" class="form-control">
<option value=""></option>
<option value="new" <?=(isset($filter) && array_key_exists("rimo_workorder_status", $filter) && $filter["rimo_workorder_status"] == "new" ) ? "selected='selected'" : ""?>>New</option>
<option value="Clarify" <?=(isset($filter) && array_key_exists("rimo_workorder_status", $filter) && $filter["rimo_workorder_status"] == "Clarify" ) ? "selected='selected'" : ""?>>Clarify</option>
<option value="Accepted" <?=(isset($filter) && array_key_exists("rimo_workorder_status", $filter) && $filter["rimo_workorder_status"] == "Accepted" ) ? "selected='selected'" : ""?>>Accepted</option>
<option value="Plan released" <?=(isset($filter) && array_key_exists("rimo_workorder_status", $filter) && $filter["rimo_workorder_status"] == "Plan released" ) ? "selected='selected'" : ""?>>Plan released</option>
<option value="Assigned" <?=(isset($filter) && array_key_exists("rimo_workorder_status", $filter) && $filter["rimo_workorder_status"] == "Assigned" ) ? "selected='selected'" : ""?>>Assigned</option>
<option value="Documented" <?=(isset($filter) && array_key_exists("rimo_workorder_status", $filter) && $filter["rimo_workorder_status"] == "Documented" ) ? "selected='selected'" : ""?>>Documented</option>
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_kunde">Rimo Workorder Name</label>
<input type="text" class="form-control" name="filter[rimo_workorder_name]" id="filter_workorder_name" value="<?=$filter['workorder_name'] ?? ""?>" />
</div>
<div class="col-2">
<label class="form-label" for="rimo_home_extref">Wohneinheit Rimo-Extref</label>
<select name="filter[rimo_home_extref]" id="filter_rimo_home_extref" class="form-control">

View File

@@ -37,6 +37,7 @@ class AddressDB {
`Hausnummer`.`rollout` AS `rollout`,
`Hausnummer`.`rollout_info` AS `rollout_info`,
`Hausnummer`.`freigabe` AS `freigabe`,
`Hausnummer`.`rimo_id` AS `hausnummer_rimo_id`,
`Hausnummer`.`rimo_fcp_name` AS `rimo_fcp_name`,
`Wohneinheit`.`id` AS `wohneinheit_id`,
`Wohneinheit`.`oaid` AS `wohneinheit_oaid`,

View File

@@ -175,14 +175,30 @@ class PreorderController extends mfBaseController {
$new_filter['add-where'] = "";
if(array_key_exists("search",$filter) && trim($filter['search'])) {
$search = trim($filter['search']);
if(array_key_exists("magic_search",$filter) && trim($filter['magic_search'])) {
$search = trim($filter['magic_search']);
$new_filter['add-where'] .= " AND (";
$new_filter['add-where'] .= " adb_hausnummer.gemeinde like '%$search%' OR adb_hausnummer.plz like '%$search%' OR adb_hausnummer.strasse like '%$search%'";
$new_filter['add-where'] .= " OR company like '%$search%' OR firstname like '%$search%' OR lastname like '%$search%' OR concat(firstname, ' ', lastname) like '%$search%' OR concat(lastname, ' ', firstname) like '%$search%' OR street like '%$search%' OR zip like '%$search%' OR city like '%$search%' OR email like '%$search' OR phone like '%$search'";
$new_filter['add-where'] .= " OR ucode like '%$search' OR oaid like '%$search'";
$new_filter['add-where'] .= " adb_hausnummer.gemeinde like '%$search%' OR adb_hausnummer.plz like '%$search%' OR adb_hausnummer.strasse like '%$search%'
OR adb_hausnummer.hausnummer like '%$search%' OR CONCAT (adb_hausnummer.strasse, ' ', adb_hausnummer.hausnummer) like '%$search%'
OR CONCAT (adb_hausnummer.strasse, ' ', adb_hausnummer.hausnummer) like '%".str_replace(" ", "%", $search)."%'";
$new_filter['add-where'] .= " OR company like '%$search%' OR firstname like '%$search%' OR lastname like '%$search%' OR concat(firstname, ' ', lastname) like '%$search%' OR concat(lastname, ' ', firstname) like '%$search%' OR street like '%$search%' OR zip like '%$search%' OR city like '%$search%' OR email like '%$search%' OR phone like '%$search%'";
$new_filter['add-where'] .= " OR tt_preorder.ucode like '%$search%' OR tt_preorder.oaid like '%$search%'";
$new_filter['add-where'] .= " OR adb_wohneinheit.extref like '%$search%'";
$new_filter['add-where'] .= " OR adb_hausnummer.hausnummer_extref like '%$search%'";
$new_filter['add-where'] .= " OR adb_hausnummer.adrcd like '%$search%'";
$new_filter['add-where'] .= " OR adb_hausnummer.grund_nr like '%$search%'";
$new_filter['add-where'] .= " OR adb_hausnummer.rimo_fcp_name like '%$search%'";
$new_filter['add-where'] .= " OR workorder.rimo_status like '%$search%'";
$new_filter['add-where'] .= " OR workorder.rimo_name like '%$search%'";
//$new_filter['add-where'] .= " OR ";
$new_filter['add-where'] .= " )";
}
//echo $new_filter['add-where'];exit;
if(array_key_exists("address", $filter) && $filter["address"]) {
$address = $this->db()->escape($filter['address']);
$new_filter['add-where'] .= " AND (adb_hausnummer.gemeinde like '%$address%' OR adb_hausnummer.plz like '%$address%' OR adb_hausnummer.strasse like '%$address%'
@@ -241,6 +257,14 @@ class PreorderController extends mfBaseController {
unset($filter['rimo_workorder']);
}
if(array_key_exists("rimo_workorder_status", $filter) && $filter['rimo_workorder_status']) {
$new_filter["rimo_workorder_status"] = $filter['rimo_workorder_status'];
}
if(array_key_exists("rimo_workorder_name", $filter) && $filter['rimo_workorder_name']) {
$new_filter["rimo_workorder_name"] = $filter['rimo_workorder_name'];
}
if(array_key_exists("ucode", $filter) && $filter['ucode']) {
$new_filter['ucode'] = "%".$filter['ucode']."%";
unset($filter['ucode']);

View File

@@ -142,7 +142,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt, MAX(rimo_status) as rimo_status, MAX(rimo_name) as rimo_name FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) workorder ON adb_wohneinheit.id = workorder.adb_wohneinheit_id
WHERE $where
ORDER BY $orderBy
LIMIT 1";
@@ -171,7 +171,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt, MAX(rimo_status) as rimo_status, MAX(rimo_name) as rimo_name FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) workorder ON adb_wohneinheit.id = workorder.adb_wohneinheit_id
LEFT JOIN Preorderlogistics ON (Preorderlogistics.preorder_id = tt_preorder.id)
WHERE $where
";
@@ -196,7 +196,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt, MAX(rimo_status) as rimo_status, MAX(rimo_name) as rimo_name FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) workorder ON adb_wohneinheit.id = workorder.adb_wohneinheit_id
LEFT JOIN Preorderlogistics ON (Preorderlogistics.preorder_id = tt_preorder.id)
WHERE $where
ORDER BY lastname, firstname
@@ -241,7 +241,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus as tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id,
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt, MAX(rimo_status) as rimo_status, MAX(rimo_name) as rimo_name FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) workorder ON adb_wohneinheit.id = workorder.adb_wohneinheit_id,
JSON_TABLE(tt_preorder.addon_services,
'$[*]' COLUMNS (
ordered VARCHAR(64) PATH '$.ordered'
@@ -273,7 +273,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus as tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id,
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt, MAX(rimo_status) as rimo_status, MAX(rimo_name) as rimo_name FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) workorder ON adb_wohneinheit.id = workorder.adb_wohneinheit_id,
JSON_TABLE(tt_preorder.addon_services,
'$[*]' COLUMNS (
ordered VARCHAR(64) PATH '$.ordered'
@@ -313,7 +313,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt, MAX(rimo_status) as rimo_status, MAX(rimo_name) as rimo_name FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) workorder ON adb_wohneinheit.id = workorder.adb_wohneinheit_id
WHERE $where
";
@@ -337,7 +337,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt, MAX(rimo_status) as rimo_status, MAX(rimo_name) as rimo_name FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) workorder ON adb_wohneinheit.id = workorder.adb_wohneinheit_id
WHERE $where
ORDER BY lastname, firstname
";
@@ -568,9 +568,23 @@ class PreorderModel {
if(array_key_exists("rimo_workorder", $filter)) {
$rimo_workorder = $filter['rimo_workorder'];
if($rimo_workorder === null || $rimo_workorder === false) {
$where .= " AND (wocount.cnt IS NULL OR wocount.cnt = 0)";
$where .= " AND (workorder.cnt IS NULL OR workorder.cnt = 0)";
} elseif($rimo_workorder) {
$where .= " AND wocount.cnt > 0";
$where .= " AND workorder.cnt > 0";
}
}
if(array_key_exists("rimo_workorder_status", $filter)) {
$rimo_workorder_status = FronkDB::singleton()->escape($filter['rimo_workorder_status']);
if($rimo_workorder_status) {
$where .= " AND workorder.rimo_status = '$rimo_workorder_status'";
}
}
if(array_key_exists("rimo_workorder_name", $filter)) {
$rimo_workorder_name = FronkDB::singleton()->escape($filter['rimo_workorder_name']);
if($rimo_workorder_name) {
$where .= " AND workorder.rimo_name = '$rimo_workorder_name'";
}
}