Added status id and flag filter to AddressDB/Index

This commit is contained in:
Frank Schubert
2024-09-25 14:39:38 +02:00
parent 04ff6cf758
commit dbc0336d52
4 changed files with 232 additions and 16 deletions
@@ -77,7 +77,9 @@ class ADBHausnummerModel {
LEFT JOIN Gemeinde ON (Gemeinde.id = Ortschaft.gemeinde_id)
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
LEFT JOIN HausnummerStatusflagValue ON (HausnummerStatusflagValue.hausnummer_id = Hausnummer.id)
WHERE $where
GROUP BY Hausnummer.id
ORDER BY netzgebiet_id,Gemeinde.id,ortschaft_id,strasse_id,LENGTH(hausnummer), hausnummer
LIMIT 1";
@@ -115,14 +117,19 @@ class ADBHausnummerModel {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Hausnummer
LEFT JOIN Ortschaft ON (Ortschaft.id = Hausnummer.ortschaft_id)
LEFT JOIN Gemeinde ON (Gemeinde.id = Ortschaft.gemeinde_id)
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
WHERE $where
$sql = "SELECT COUNT(*) as cnt FROM (
SELECT Hausnummer.id FROM Hausnummer
LEFT JOIN Ortschaft ON (Ortschaft.id = Hausnummer.ortschaft_id)
LEFT JOIN Gemeinde ON (Gemeinde.id = Ortschaft.gemeinde_id)
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
LEFT JOIN HausnummerStatusflagValue ON (HausnummerStatusflagValue.hausnummer_id = Hausnummer.id)
WHERE $where
GROUP BY Hausnummer.id
) hn
";
mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
@@ -142,7 +149,9 @@ class ADBHausnummerModel {
LEFT JOIN Gemeinde ON (Gemeinde.id = Ortschaft.gemeinde_id)
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
LEFT JOIN HausnummerStatusflagValue ON (HausnummerStatusflagValue.hausnummer_id = Hausnummer.id)
WHERE $where
GROUP BY Hausnummer.id
ORDER BY netzgebiet_id,Gemeinde.id,ortschaft_id,strasse_id,LENGTH(hausnummer), hausnummer";
if(is_array($limit) && count($limit)) {
@@ -402,6 +411,24 @@ class ADBHausnummerModel {
$where .= " AND Hausnummer.rollout_info like '%$rollout_info%'";
}
}
if(array_key_exists("status_id", $filter)) {
$status_id = $filter['status_id'];
if(is_array($status_id)) {
$where .= " AND Hausnummer.status_id IN (".implode(", ", $status_id).")";
} elseif(is_numeric($status_id)) {
$where .= " AND Hausnummer.status_id = $status_id";
}
}
if(array_key_exists("status_flag", $filter)) {
$status_flag = $filter['status_flag'];
if(is_array($status_flag)) {
$where .= " AND HausnummerStatusflagValue.flag_id IN (".implode(", ", $status_flag).") AND HausnummerStatusflagValue.value=1";
} elseif(is_numeric($status_flag)) {
$where .= " AND HausnummerStatusflagValue.flag_id = $status_flag AND HausnummerStatusflagValue.value=1";
}
}
//var_dump($filter, $where);exit;
return $where;