Refined rimo filters in Preorder

This commit is contained in:
Frank Schubert
2023-05-24 17:29:01 +02:00
parent 426170a8c1
commit f680170da2
5 changed files with 93 additions and 28 deletions

View File

@@ -141,13 +141,13 @@
<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>
<option value="0" <?=(isset($filter) && array_key_exists("rimo_workorder", $filter) && intval($filter['rimo_workorder']) === 0) ? "selected='selected'" : ""?>>Nicht erstellt</option>
<option value="1" <?=(isset($filter) && array_key_exists("rimo_workorder", $filter) && strlen($filter['rimo_workorder']) && intval($filter['rimo_workorder']) === 1) ? "selected='selected'" : ""?>>Erstellt</option>
<option value="0" <?=(isset($filter) && array_key_exists("rimo_workorder", $filter) && strlen($filter['rimo_workorder']) && intval($filter['rimo_workorder']) === 0) ? "selected='selected'" : ""?>>Nicht erstellt</option>
<option value="1" <?=(isset($filter) && array_key_exists("rimo_workorder", $filter) && intval($filter['rimo_workorder']) === 1) ? "selected='selected'" : ""?>>Erstellt</option>
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_rimo_homes">Wohneinheit Rimo-Extref</label>
<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">
<option value=""></option>
<option value="0" <?=(isset($filter) && array_key_exists("rimo_home_extref", $filter) && strlen($filter['rimo_home_extref']) && intval($filter['rimo_home_extref']) === 0) ? "selected='selected'" : ""?>>Fehlt</option>

View File

@@ -7,6 +7,52 @@ class AddressDB {
public $validation_error = [];
public static $wohneinheit_query = "select `Netzgebiet`.`id` AS `netzgebiet_id`,
`Netzgebiet`.`name` AS `netzgebiet`,
`Netzgebiet`.`extref` AS `netzgebiet_extref`,
`Gemeinde`.`id` AS `gemeinde_id`,
`Gemeinde`.`kennziffer` AS `gemeinde_kennziffer`,
`Gemeinde`.`code` AS `gemeinde_code`,
`Gemeinde`.`name` AS `gemeinde`,
`Ortschaft`.`id` AS `ortschaft_id`,
`Ortschaft`.`kennziffer` AS `ortschaft_kennziffer`,
`Ortschaft`.`name` AS `ortschaft`,
`Plz`.`plz` AS `plz`,
`Strasse`.`id` AS `strasse_id`,
`Strasse`.`kennziffer` AS `strasse_kennziffer`,
`Strasse`.`name` AS `strasse`,
`Hausnummer`.`id` AS `hausnummer_id`,
`Hausnummer`.`oaid` AS `oaid`,
`Hausnummer`.`adrcd` AS `adrcd`,
`Hausnummer`.`oaid` AS `hausnummer_oaid`,
`Hausnummer`.`hausnummer` AS `hausnummer`,
`Hausnummer`.`extref` AS `hausnummer_extref`,
`Hausnummer`.`unit_count` AS `unit_count`,
`Hausnummer`.`gps_lat` AS `gps_lat`,
`Hausnummer`.`gps_long` AS `gps_long`,
`Hausnummer`.`grund_nr` AS `grund_nr`,
`Hausnummer`.`rollout` AS `rollout`,
`Hausnummer`.`rollout_info` AS `rollout_info`,
`Hausnummer`.`freigabe` AS `freigabe`,
`Wohneinheit`.`id` AS `wohneinheit_id`,
`Wohneinheit`.`oaid` AS `wohneinheit_oaid`,
`Wohneinheit`.`extref` AS `wohneinheit_extref`,
`Wohneinheit`.`num` AS `num`,
`Wohneinheit`.`block` AS `block`,
`Wohneinheit`.`stiege` AS `stiege`,
`Wohneinheit`.`stock` AS `stock`,
`Wohneinheit`.`tuer` AS `tuer`,
`Wohneinheit`.`bezeichner` AS `bezeichner`,
`Wohneinheit`.`zusatz` AS `zusatz`
`Wohneinheit`.`nutzung` AS `nutzung`
from `Hausnummer`
left join `Netzgebiet` on (`Hausnummer`.`netzgebiet_id` = `Netzgebiet`.`id`)
left join `Plz` on (`Plz`.`id` = `Hausnummer`.`plz_id`)
left join `Strasse` on (`Strasse`.`id` = `Hausnummer`.`strasse_id`)
left join `Ortschaft` on (`Ortschaft`.`id` = `Hausnummer`.`ortschaft_id`)
left join `Gemeinde` on (`Gemeinde`.`id` = `Strasse`.`gemeinde_id`)
left join `Wohneinheit` on (`Wohneinheit`.`hausnummer_id` = `Hausnummer`.`id`)";
/*public static $wohneinheit_query = "select `Netzgebiet`.`id` AS `netzgebiet_id`,
`Netzgebiet`.`name` AS `netzgebiet`,
`Netzgebiet`.`extref` AS `netzgebiet_extref`,
`Gemeinde`.`id` AS `gemeinde_id`,
@@ -46,7 +92,7 @@ class AddressDB {
left join `Ortschaft` on (`Ortschaft`.`id` = `Hausnummer`.`ortschaft_id`)
left join `Gemeinde` on (`Gemeinde`.`id` = `Strasse`.`gemeinde_id`)
left join `Wohneinheit` on (`Wohneinheit`.`hausnummer_id` = `Hausnummer`.`id`)";
*/
public function __construct() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->log = mfLoghandler::singleton();

View File

@@ -129,14 +129,15 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
$preorder = PreorderModel::getFirst(['ucode' => strtoupper($code), 'partner_id' => $this->me->address_id]);
if(!$preorder) {
// try oan id
$preorder = PreorderModel::getFirst(['oaid' => strtolower($code), 'partner_id' => $this->me->address_id]);
}
if(!$preorder) {
// try as extref
$preorder = PreorderModel::getFirst(['extref' => $code, 'partner_id' => $this->me->address_id]);
}
if(!$preorder) {
// try oan id
$preorder = PreorderModel::getFirst(['oaid' => strtolower($code), 'partner_id' => $this->me->address_id]);
}
if(!$preorder) {
return mfResponse::NotFound(["message" => "Preorder not found"]);
}

View File

@@ -116,7 +116,7 @@ class PreorderController extends mfBaseController {
if(array_key_exists("search",$filter) && trim($filter['search'])) {
$search = trim($filter['search']);
$new_filter['add-where'] = " AND (";
$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'";
@@ -165,16 +165,16 @@ class PreorderController extends mfBaseController {
if(array_key_exists("rimo_home_extref", $filter)) {
if($filter['rimo_home_extref'] == "1") {
$new_filter['add-where'] = " AND (adb_wohneinheit.extref IS NOT NULL AND adb_wohneinheit.extref like 'SDIHome_%')";
$new_filter['add-where'] .= " AND (adb_wohneinheit.id IS NOT NULL AND adb_wohneinheit.extref IS NOT NULL AND adb_wohneinheit.extref like 'SDIHome_%')";
} elseif($filter['rimo_home_extref'] == "0") {
$new_filter['add-where'] = " AND (adb_wohneinheit.extref IS NULL OR adb_wohneinheit.extref NOT LIKE 'SDIHome_%')";
$new_filter['add-where'] .= " AND (adb_wohneinheit.extref IS NULL OR adb_wohneinheit.extref NOT LIKE 'SDIHome_%')";
}
}
if(array_key_exists("rimo_workorder", $filter)) {
if($filter["rimo_workorder"] == "1") {
$new_filter['workorder_export_date'] = true;
} else {
} elseif($filter["rimo_workorder"] == "0") {
$new_filter['workorder_export_date'] = false;
}
}

View File

@@ -124,13 +124,20 @@ class PreorderModel {
$orderBy = "lastname, firstname";
if($order) $orderBy = $order;
$sql = "SELECT tt_preorder.* FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
/*$sql = "SELECT tt_preorder.* FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
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)
WHERE $where
ORDER BY $orderBy
LIMIT 1
";
";*/
$sql = "SELECT tt_preorder.* FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
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)
WHERE $where
ORDER BY $orderBy
LIMIT 1";
mfLoghandler::singleton()->debug($sql);
@@ -152,16 +159,20 @@ class PreorderModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) AS cnt FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id),
JSON_TABLE(addon_services,
'$[*]' COLUMNS (
ordered VARCHAR(64) PATH '$.ordered'
)
) a_services
WHERE $where
AND addon_services IS NOT NULL AND (a_services.ordered = 'true' OR a_services.ordered=1)
GROUP BY tt_preorder.id
$sql = "SELECT COUNT(*) AS cnt FROM (
SELECT tt_preorder.* FROM`".FRONKDB_DBNAME."`.Preorder tt_preorder
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),
JSON_TABLE(tt_preorder.addon_services,
'$[*]' COLUMNS (
ordered VARCHAR(64) PATH '$.ordered'
)
) a_services
WHERE $where
AND addon_services IS NOT NULL AND (a_services.ordered = 'true' OR a_services.ordered=1)
GROUP BY tt_preorder.id
) as tbl
";
mfLoghandler::singleton()->debug($sql);
@@ -181,8 +192,10 @@ class PreorderModel {
$where = self::getSqlFilter($filter);
$sql = "SELECT tt_preorder.* FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id),
JSON_TABLE(addon_services,
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),
JSON_TABLE(tt_preorder.addon_services,
'$[*]' COLUMNS (
ordered VARCHAR(64) PATH '$.ordered'
)
@@ -220,7 +233,7 @@ class PreorderModel {
$sql = "SELECT COUNT(*) as cnt FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
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_hausnummer_id = adb_wohneinheit.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
WHERE $where
";
@@ -243,10 +256,15 @@ class PreorderModel {
$sql = "SELECT tt_preorder.* FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
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_hausnummer_id = adb_wohneinheit.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
WHERE $where
ORDER BY lastname, firstname
";
/*$sql = "SELECT tt_preorder.* FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
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)
WHERE $where
ORDER BY lastname, firstname";*/
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {