diff --git a/Layout/default/AddressDB/Index.php b/Layout/default/AddressDB/Index.php
index eb7a3909f..cfce6d799 100644
--- a/Layout/default/AddressDB/Index.php
+++ b/Layout/default/AddressDB/Index.php
@@ -166,6 +166,11 @@
+
+
+
+ " />
+
@@ -215,10 +220,10 @@
Gemeinde |
Ortschaft |
Straße |
- Hausnummer |
+ Hausnr. |
Stiege |
Wohneinheiten |
- GDA-Eigenschaft |
+ Rimo-ID |
Rollout Jahr |
Rollout Info |
|
@@ -236,8 +241,12 @@
=$address->strasse->name?> |
=$address->hausnummer?> |
=$address->stiege?> |
- =count($address->wohneinheiten)?> |
- =$address->gdaeigenschaft?> |
+ =count($address->wohneinheiten)?>
+ tool_building_type == 1) ? "EFH" : "MPH")?>">
+ tool_building_type == 1) ? "fa-home" : "fa-building")?>">
+ |
+ =str_replace('_', '_', $address->rimo_id)?>
+ |
=$address->rollout?> |
=$address->rollout_info?> |
diff --git a/application/ADBHausnummer/ADBHausnummerModel.php b/application/ADBHausnummer/ADBHausnummerModel.php
index 835cdd033..4a22d52b6 100644
--- a/application/ADBHausnummer/ADBHausnummerModel.php
+++ b/application/ADBHausnummer/ADBHausnummerModel.php
@@ -121,15 +121,28 @@ class ADBHausnummerModel {
if ($join_tables) {
$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
- ) hn";
- } else $sql = "SELECT COUNT(*) as cnt FROM Hausnummer WHERE $where";
+ 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)";
+ } else {
+ $sql = "SELECT COUNT(*) as cnt FROM Hausnummer";
+ }
+
+ // Only join Wohneinheit table if we're searching for Wohneinheit data
+ if (!empty($filter['home_oaid_rimo_id'])) {
+ $sql .= " LEFT JOIN Wohneinheit ON (Wohneinheit.hausnummer_id = Hausnummer.id)";
+ }
+
+ $sql .= " WHERE $where";
+
+ if (!empty($filter['home_oaid_rimo_id'])) {
+ $sql .= " GROUP BY Hausnummer.id";
+ }
+
+
mfLoghandler::singleton()->debug($sql);
@@ -165,45 +178,52 @@ class ADBHausnummerModel {
public static function search($filter, $limit = false, $returnDBRessource = false) {
- $items = [];
- $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
-
- $where = self::getSqlFilter($filter);
- $sql = "SELECT Hausnummer.* FROM Hausnummer
+ $items = [];
+ $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
+
+ $where = self::getSqlFilter($filter);
+
+ // Base SQL with standard joins
+ $sql = "SELECT Hausnummer.* 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
+ LEFT JOIN HausnummerStatusflagValue ON (HausnummerStatusflagValue.hausnummer_id = Hausnummer.id)";
+
+ if (!empty($filter['home_oaid_rimo_id'])) {
+ $sql .= " LEFT JOIN Wohneinheit ON (Wohneinheit.hausnummer_id = Hausnummer.id)";
+ }
+
+ $sql .= " 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)) {
- if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
- $sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
- } elseif(is_numeric($limit['count'])) {
- $sql .= " LIMIT ".$limit['count'];
- }
+
+ if(is_array($limit) && count($limit)) {
+ if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
+ $sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
+ } elseif(is_numeric($limit['count'])) {
+ $sql .= " LIMIT ".$limit['count'];
+ }
+ }
+
+ mfLoghandler::singleton()->debug($sql);
+
+ $res = $db->query($sql);
+ if($db->num_rows($res)) {
+ // hack for AddressDBController::exportAction
+ if($returnDBRessource) {
+ return $res;
+ }
+
+ while($data = $db->fetch_object($res)) {
+ $items[] = new ADBHausnummer($data);
+ }
+ }
+ return $items;
}
-
- mfLoghandler::singleton()->debug($sql);
-
- $res = $db->query($sql);
- if($db->num_rows($res)) {
-
- // hack for AddressDBController::exportAction
- if($returnDBRessource) {
- return $res;
- }
-
- while($data = $db->fetch_object($res)) {
- $items[] = new ADBHausnummer($data);
- }
- }
- return $items;
- }
-
+
+
private static function getSqlFilter($filter) {
$where = "1=1 ";
@@ -494,9 +514,22 @@ class ADBHausnummerModel {
: " AND Hausnummer.rimo_op_state = '$rimo_op_state'";
}
+ if (array_key_exists("home_oaid_rimo_id", $filter)) {
+ $searchTerm = $filter['home_oaid_rimo_id'];
+
+ $searchTerms = explode(',', $searchTerm);
+ $where .= " AND (";
+ $conditions = [];
+ foreach ($searchTerms as $term) {
+ $escapedTerm = FronkDB::singleton()->escape(trim($term));
+ if ($escapedTerm) {
+ $conditions[] = "(Wohneinheit.oaid LIKE '%{$escapedTerm}%' OR Wohneinheit.extref LIKE '%{$escapedTerm}%')";
+ }
+ }
+ $where .= implode(' OR ', $conditions);
+ $where .= ")";
+ }
-
- //var_dump($filter, $where);exit;
return $where;
}
|