added filter to Address

This commit is contained in:
Frank Schubert
2021-11-30 22:05:03 +01:00
parent 29f63d41a7
commit 6fa6dbbd87
4 changed files with 332 additions and 12 deletions

View File

@@ -119,25 +119,63 @@ class AddressModel {
return $addresses;
}
public static function search($filter) {
public static function count($filter) {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM (
SELECT Address.id as address_id
FROM Address
LEFT JOIN Addresstype ON (Addresstype.address_id = Address.id)
WHERE $where
GROUP BY Address.id
) as tbl";
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 search($filter, $limit = false) {
//var_dump($filter);exit;
$items = [];
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$have = [];
$sql = "SELECT Address.* FROM Address, Addresstype
/*$sql = "SELECT Address.* FROM Address, Addresstype
WHERE Addresstype.address_id = Address.id
AND $where
GROUP BY Addresstype.address_id
ORDER BY Address.id";
ORDER BY Address.id";*/
$sql = "SELECT Address.* FROM Address
LEFT JOIN Addresstype ON (Addresstype.address_id = Address.id)
WHERE $where
GROUP BY Address.id
ORDER BY company, lastname, firstname, zip, city, Address.id";
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 Address($data);
$have[] = $data->id;
//$have[] = $data->id;
}
}
/*
if(!array_key_exists("addresstype", $filter)) {
if($have) {
$res = $db->select("Address", "*", "$where AND id NOT IN (".implode(",", $have).")");
@@ -149,7 +187,7 @@ class AddressModel {
$items[] = new Address($data);
}
}
}
}*/
return $items;
}
@@ -157,7 +195,7 @@ class AddressModel {
private function getSqlFilter($filter) {
$where = "1=1 ";
//var_dump($filter);exit;
if(array_key_exists("customer_number", $filter)) {
$cn = $filter["customer_number"];
if(is_numeric($cn)) {
@@ -171,6 +209,70 @@ class AddressModel {
$where .= " AND spin='$spin'";
}
}
if(array_key_exists("company", $filter)) {
$company = FronkDB::singleton()->escape($filter["company"]);
if($company) {
$where .= " AND company like '%$company%'";
}
}
if(array_key_exists("firstname", $filter)) {
$firstname = FronkDB::singleton()->escape($filter["firstname"]);
if($firstname) {
$where .= " AND firstname like '%$firstname%'";
}
}
if(array_key_exists("lastname", $filter)) {
$lastname = FronkDB::singleton()->escape($filter["lastname"]);
if($lastname) {
$where .= " AND lastname like '%$lastname%'";
}
}
if(array_key_exists("street", $filter)) {
$street = FronkDB::singleton()->escape($filter["street"]);
if($street) {
$where .= " AND street like '%$street%'";
}
}
if(array_key_exists("zip", $filter)) {
$zip = FronkDB::singleton()->escape($filter["zip"]);
if($zip) {
$where .= " AND zip like '%$zip%'";
}
}
if(array_key_exists("city", $filter)) {
$city = FronkDB::singleton()->escape($filter["city"]);
if($city) {
$where .= " AND city like '%$city%'";
}
}
if(array_key_exists("country", $filter)) {
$country = FronkDB::singleton()->escape($filter["country"]);
if($country) {
$where .= " AND country like '%$country%'";
}
}
if(array_key_exists("email", $filter)) {
$email = FronkDB::singleton()->escape($filter["email"]);
if($email) {
$where .= " AND email like '%$email%'";
}
}
if(array_key_exists("pfm", $filter)) {
$pfm = FronkDB::singleton()->escape($filter["pfm"]);
if($pfm) {
$where .= " AND (phone like '%$pfm%' OR fax like '%$pfm%' OR mobile like '%$pfm%' )";
}
}
/*
* Address Type
*/
@@ -211,7 +313,7 @@ class AddressModel {
if(array_key_exists("parents_only", $filter)) {
$po = $filter['parents_only'];
if($po == 1) {
if($po) {
$where .= " AND parent_id IS NULL";
}
}