improve search

This commit is contained in:
2025-10-29 08:56:08 +01:00
parent 02dd58442e
commit 1b3859d60a

View File

@@ -240,15 +240,28 @@ class OrderModel {
$where .= " AND `Order`.owner_id=$ownerid";
}
}
if(array_key_exists("owner", $filter)) {
$owner = FronkDB::singleton()->escape($filter['owner']);
if($owner) {
$where .= " AND (Address.customer_number like '$owner' OR Address.company like '%$owner%' OR Address.firstname like '%$owner%' OR Address.lastname like '%$owner%' OR Address.customer_number like '%$owner%')";
if (!empty($filter['owner'])) {
$db = FronkDB::singleton();
$fields = [
'Address.customer_number',
'Address.company',
'Address.firstname',
'Address.lastname',
'Order.partner_number'
];
$searchTerms = preg_split('/\s+/', $filter['owner'], -1, PREG_SPLIT_NO_EMPTY);
foreach ($searchTerms as $term) {
if ($escapedTerm = $db->escape($term)) {
$likes = array_map(fn($field) => "$field LIKE '%$escapedTerm%'", $fields);
$where .= " AND (" . implode(' OR ', $likes) . ")";
}
}
}
}
if(array_key_exists("owner_address", $filter)) {
if(array_key_exists("owner_address", $filter)) {
$owner_address = FronkDB::singleton()->escape($filter['owner_address']);
if($owner_address) {
$where .= " AND (Address.street like '%$owner_address%' OR Address.zip like '%$owner_address%' OR Address.city like '%$owner_address%')";