Fixed addon_service filter in Preorder/Index

This commit is contained in:
Frank Schubert
2022-11-11 18:03:07 +01:00
parent e0c7a9cf54
commit 2d698160c0
3 changed files with 81 additions and 12 deletions
+66
View File
@@ -110,6 +110,71 @@ class PreorderModel {
return null;
}
public static function countOrderedAddonservices($filter) {
$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
";
mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function searchOrderedAddonservices($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton();
$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,
'$[*]' 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
ORDER BY lastname, firstname
";
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($count)) {
$sql .= " LIMIT ".$limit['count'];
}
}
mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new Preorder($data);
}
}
return $items;
}
public static function count($filter) {
$db = FronkDB::singleton();
@@ -253,6 +318,7 @@ class PreorderModel {
}
}
// custom where clause
if(array_key_exists("add-where", $filter)) {
$where .= " ".$filter['add-where'];
}