ConstructionConsent added new Filters

This commit is contained in:
Luca Haid
2025-02-19 20:30:29 +01:00
parent 578189a959
commit d2a17d996d
2 changed files with 62 additions and 30 deletions
@@ -154,7 +154,7 @@ class ConstructionConsent extends mfBaseModel {
}
return $this->adb_hausnummer;
}
if($name == "adb_strasse") {
if(!$this->adb_strasse_id) return null;
$strasse = new ADBStrasse($this->adb_strasse_id);
@@ -307,7 +307,7 @@ class ConstructionConsent extends mfBaseModel {
return $this->$name;
}
/********************************
* Begin static Model functions
*/
@@ -339,7 +339,7 @@ class ConstructionConsent extends mfBaseModel {
return $model;
}
public static function getAll() {
$items = [];
@@ -377,37 +377,46 @@ class ConstructionConsent extends mfBaseModel {
}
public static function count($filter) {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM ConstructionConsent
LEFT JOIN ".ADDRESSDB_DBNAME.".view_hausnummer ON (ConstructionConsent.adb_hausnummer_id = view_hausnummer.hausnummer_id)
WHERE $where";
//mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
return self::search($filter, false, false, true);
}
public static function search($filter, $limit = false, $order = false) {
//var_dump($filter);exit;
public static function search($filter, $limit = false, $order = false, $returnCount = false) {
$items = [];
if(!$order) {
$order = "adb_hausnummer_id ASC";
}
$having = '';
if(array_key_exists("status_light", $filter) && strlen(trim($filter['status_light'])) > 2) {
$having = " HAVING status_light = '".$filter['status_light']."'";
}
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT * FROM ConstructionConsent
LEFT JOIN ".ADDRESSDB_DBNAME.".view_hausnummer ON (ConstructionConsent.adb_hausnummer_id = view_hausnummer.hausnummer_id)
$sql = "SELECT
ConstructionConsent.*,
COALESCE(SUM(cwo.result = 'denied'), 0) AS denied_count,
COALESCE(SUM(cwo.result = 'unresolvable'), 0) AS unresolvable_count,
COALESCE(SUM(cwo.result = 'moved'), 0) AS moved_count,
COALESCE(SUM(cwo.result = 'accepted'), 0) AS accepted_count,
COUNT(cwo.id) AS total_owners,
CASE
WHEN COALESCE(SUM(cwo.result = 'denied'), 0) > 0 THEN 'red'
WHEN COALESCE(SUM(cwo.result = 'unresolvable'), 0) > 0
OR COALESCE(SUM(cwo.result = 'moved'), 0) > 0 THEN 'yellow'
WHEN COALESCE(SUM(cwo.result = 'accepted'), 0) = COUNT(cwo.id)
AND COUNT(cwo.id) > 0 THEN 'green'
ELSE 'blue'
END AS status_light
FROM ConstructionConsent
LEFT JOIN ConstructionConsentOwner cwo
ON ConstructionConsent.id = cwo.constructionconsent_id
LEFT JOIN addressdb.view_hausnummer vh
ON ConstructionConsent.adb_hausnummer_id = vh.hausnummer_id
WHERE $where
GROUP BY ConstructionConsent.id
$having
ORDER BY $order";
if(is_array($limit) && count($limit)) {
@@ -418,16 +427,15 @@ class ConstructionConsent extends mfBaseModel {
}
}
mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
if ($returnCount) return $db->num_rows($res);
while($data = $db->fetch_object($res)) {
$items[$data->id] = new ConstructionConsent($data);
}
}
return $items;
return $returnCount ? 0 : $items;
}
private static function getSqlFilter($filter) {
@@ -439,7 +447,7 @@ class ConstructionConsent extends mfBaseModel {
$where .= " AND ConstructionConsent.constructionconsentproject_id=$project_id";
}
}
if(array_key_exists("constructionconsentproject_id", $filter)) {
$constructionconsentproject_id = $filter['constructionconsentproject_id'];
if(is_numeric($constructionconsentproject_id)) {
@@ -481,14 +489,14 @@ class ConstructionConsent extends mfBaseModel {
$where .= " AND status='$status'";
}
}
if(array_key_exists("result", $filter)) {
$result = FronkDB::singleton()->escape($filter["result"]);
if($result) {
$where .= " AND result='$result'";
}
}
if(array_key_exists("owner_name", $filter)) {
$owner_name = FronkDB::singleton()->escape($filter["owner_name"]);
if($owner_name) {