Merge branch 'const-consent-add-filter' into 'master'

ConstructionConsent added new Filters

See merge request fronk/thetool!1041
This commit is contained in:
Luca Haid
2025-02-19 19:31:48 +00:00
2 changed files with 62 additions and 30 deletions

View File

@@ -43,7 +43,7 @@ $pagination_entity_name = "Zustimmungserklärungen";
</select>
</div>
<div class="col-2">
<div class="col-1">
<label class="form-label" for="filter_object_type">Objektart</label>
<select name="filter[object_type]" id="filter_object_type" class="form-control">
<option value="">Alle</option>
@@ -52,7 +52,7 @@ $pagination_entity_name = "Zustimmungserklärungen";
</select>
</div>
<div class="col-2">
<div class="col-1">
<label class="form-label" for="filter_network">Netzgebiet</label>
<select name="filter[network]" id="filter_network" class="form-control">
<option value="">Alle</option>
@@ -70,6 +70,26 @@ $pagination_entity_name = "Zustimmungserklärungen";
</select>
</div>
<div class="col-1">
<label class="form-label" for="filter_status_light">Ampelstatus</label>
<select name="filter[status_light]" id="filter_status_light" class="form-control">
<option value="">Alle</option>
<option value="blue" <?=(array_key_exists("status_light", $filter) && $filter["status_light"] == "blue") ? "selected='selected'" : ""?>>Blau</option>
<option value="green" <?=(array_key_exists("status_light", $filter) && $filter["status_light"] == "green") ? "selected='selected'" : ""?>>Grün</option>
<option value="yellow" <?=(array_key_exists("status_light", $filter) && $filter["status_light"] == "yellow") ? "selected='selected'" : ""?>>Gelb</option>
<option value="red" <?=(array_key_exists("status_light", $filter) && $filter["status_light"] == "red") ? "selected='selected'" : ""?>>Rot</option>
</select>
</div>
<div class="col-1">
<label class="form-label" for="filter_inspection_planner">Begehung Planer</label>
<select name="filter[inspection_planner]" id="filter_inspection_planner" class="form-control">
<option value="">Alle</option>
<option value="!NULL" <?=(array_key_exists("inspection_planner", $filter) && $filter["inspection_planner"] == "!NULL") ? "selected='selected'" : ""?>>Ja</option>
<option value="NULL" <?=(array_key_exists("inspection_planner", $filter) && $filter["inspection_planner"] == "NULL") ? "selected='selected'" : ""?>>Nein</option>
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_address">Objektadresse</label>
<input type="text" class="form-control" name="filter[address]" id="filter_address" value="<?=(array_key_exists('address', $filter)) ? $filter['address'] : ""?>" />
@@ -89,6 +109,9 @@ $pagination_entity_name = "Zustimmungserklärungen";
</div>
</div>
<?php
// if results are more than 0
if (count($items) > 0) : ?>
<div class="card">
<div class="card-header">
<button class="btn btn-primary collapsed"
@@ -179,6 +202,7 @@ $pagination_entity_name = "Zustimmungserklärungen";
</div>
</div>
</div>
<?php endif; ?>
<div class="card">
<div class="card-body mb-3">

View File

@@ -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) {