-
+
diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php
index 9732a8e12..5b1b1f79b 100644
--- a/application/Api/v1/AddressdbApicontroller.php
+++ b/application/Api/v1/AddressdbApicontroller.php
@@ -120,22 +120,40 @@ class AddressdbApicontroller extends mfBaseApicontroller {
return mfResponse::BadRequest(['message' => "No search parameters"]);
}
+ $where = "1=1";
+
if($district) {
$city_search = ['ortschaft%' => $district];
+ $where .= " AND ortschaft like '$district%'";
}
if($city) {
$city_search = ['name%' => $city];
+ $where .= " AND gemeinde like '$city%'";
}
if($zip) {
$city_search['plz%'] = $zip;
+ $where .= " AND plz like '$zip%'";
}
if(count($this->filter_salescluster_ids)) {
$city_search['netzgebiet_id'] = $this->filter_salescluster_ids;
+ $where .= " AND netzgebiet_id IN (".join(", ", $this->filter_salescluster_ids).")";
}
$cities = [];
- foreach(ADBGemeindeModel::search($city_search) as $gem) {
+
+ $sql = "SELECT gemeinde, ortschaft FROM view_hausnummer WHERE $where GROUP BY gemeinde,ortschaft_id";
+ $res = $this->db()->query($sql);
+ if($this->db()->num_rows($res)) {
+ while($data = $this->db()->fetch_object($res)) {
+ if(!array_key_exists($data->gemeinde, $cities)) {
+ $cities[$data->gemeinde] = [];
+ }
+ $cities[$data->gemeinde][] = $data->ortschaft;
+ }
+ }
+
+ /*foreach(ADBGemeindeModel::search($city_search) as $gem) {
$districts = [];
if($district) {
@@ -149,7 +167,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
}
$cities[$gem->name] = $districts;
- }
+ }*/
return mfResponse::Ok(['cities' => $cities]);
}
@@ -171,11 +189,11 @@ class AddressdbApicontroller extends mfBaseApicontroller {
}
$zip_search = ['plzstring%' => $zip];
-
+ //var_dump($this->filter_salescluster_ids);exit;
if(count($this->filter_salescluster_ids)) {
$zip_search['netzgebiet_id'] = $this->filter_salescluster_ids;
}
-
+ //var_dump($zip_search);exit;
$results = ADBPlzModel::search($zip_search);
@@ -196,6 +214,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$search = trim($get['search']);
$street = trim($get['street']);
$city = trim($get['city']);
+ $district = trim($get['district']);
$zip = trim($get['zip']);
if(!$search && !$street && !$city && !$zip) {
@@ -206,25 +225,42 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$street = $search;
}
+ $where = "1=1";
$street_search = ["name%" => $street];
if($city) {
$street_search['gemeinde%'] = $city;
+ $city = $this->db()->escape($city);
+ $where .= " AND gemeinde like '$city%'";
}
if($zip) {
$street_search['plz%'] = $zip;
+ $zip = $this->db()->escape($zip);
+ $where .= " AND plz like '$zip%'";
}
if(count($this->filter_salescluster_ids)) {
$street_search['netzgebiet_id'] = $this->filter_salescluster_ids;
+ $where .= " AND netzgebiet_id IN (".join(", ", $this->filter_salescluster_ids).")";
}
- $results = ADBStrasseModel::search($street_search);
-
-
$streets = [];
+
+ $sql = "SELECT strasse FROM view_hausnummer WHERE $where GROUP BY strasse ORDER BY strasse";
+ //echo "$sql";exit;
+ $res = $this->db()->query($sql);
+ if($this->db()->num_rows($res)) {
+ while($data = $this->db()->fetch_object($res)) {
+ $streets[] = $data->strasse;
+ }
+
+ }
+ /*$results = ADBStrasseModel::search($street_search);
+
+
+
foreach($results as $result) {
$streets[] = $result->name;
- }
+ }*/
$streets = array_unique($streets);
sort($streets);
@@ -251,21 +287,26 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$where = "1=1";
if($search_zip) {
- $where .= " AND plz like '%$search_zip%'";
+ $where .= " AND plz like '$search_zip%'";
}
if($search_district) {
- $where .= " AND ortschaft like '%$search_district%'";
+ $where .= " AND ortschaft like '$search_district%'";
}
if($search_city) {
- $where .= " AND gemeinde like '%$search_city%'";
+ $where .= " AND gemeinde like '$search_city%'";
}
if($search_street) {
- $where .= " AND strasse like '%$search_street%'";
+ $where .= " AND strasse like '$search_street%'";
}
if($search_housenumber) {
- $where .= " AND hausnummer like '%$search_housenumber%'";
+ $where .= " AND hausnummer like '$search_housenumber%'";
}
-
+
+ if(count($this->filter_salescluster_ids)) {
+ $where .= " AND netzgebiet_id IN (".implode(",", $this->filter_salescluster_ids).")";
+ }
+ //echo $where;
+ //var_dump($this->filter_salescluster_ids);exit;
$sql = "SELECT * FROM view_wohneinheit WHERE $where ORDER BY plz, gemeinde, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(tuer), tuer";
$res = $this->db()->query($sql);
diff --git a/application/Api/v1/PreorderApicontroller.php b/application/Api/v1/PreorderApicontroller.php
index 3fd9dc7cf..92f92ac6c 100644
--- a/application/Api/v1/PreorderApicontroller.php
+++ b/application/Api/v1/PreorderApicontroller.php
@@ -107,7 +107,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
$address_search = [];
- foreach(['street' => 'strasse','housenumber' => "hausnummer",'zip' => "plz",'city' => "gemeinde"] as $key => $field_name) {
+ foreach(['street' => 'strasse','housenumber' => "hausnummer",'zip' => "plz",'city' => "gemeinde", 'district' => "ortschaft"] as $key => $field_name) {
if(property_exists($this->post['address'], $key)) {
$address_search[$field_name] = $this->db()->escape(trim($this->post['address']->$key));
}
diff --git a/application/Dashboard/DashboardController.php b/application/Dashboard/DashboardController.php
index d9f7f03ad..30536b408 100644
--- a/application/Dashboard/DashboardController.php
+++ b/application/Dashboard/DashboardController.php
@@ -18,15 +18,8 @@ class DashboardController extends mfBaseController {
protected function testAction() {
- $sql = "SELECT tt_preorder.* FROM `thetool_live`.Preorder tt_preorder
- LEFT JOIN `thetool_addressdb`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
- WHERE 1=1 AND deleted=0 AND preordercampaign_id=1 AND (adb_hausnummer.gemeinde like '%stift%' OR adb_hausnummer.plz like '%stift%' OR adb_hausnummer.strasse like '%stift%')
- ORDER By lastname, firstname";
- $res = $this->db()->query($sql);
- if($this->db()->num_rows($res)) {
- $data = $this->db()->fetch_object($res);
- var_dump($data);exit;
- }
+ var_dump(ADBHausnummerModel::search(["hausnummer" => 1]));
+ exit;
}
protected function colorAction() {
diff --git a/scripts/addressdb/addressdb_import_bev_adressregister.php b/scripts/addressdb/addressdb_import_bev_adressregister.php
index ce09ba416..9dcb7f2f5 100755
--- a/scripts/addressdb/addressdb_import_bev_adressregister.php
+++ b/scripts/addressdb/addressdb_import_bev_adressregister.php
@@ -22,8 +22,6 @@ $folder = BASEDIR."/scripts/addressdb/import/bev";
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$log = mfLoghandler::singleton();
-$db->query("SET autocommit=0");
-
/*
* Import Gemeinden
*/
@@ -31,6 +29,7 @@ $db->query("SET autocommit=0");
$filename = "$folder/GEMEINDE.csv";
$input = fopen($filename, "r");
+$db->query("SET autocommit=0");
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
@@ -59,7 +58,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
}
-
+$db->query("COMMIT");
echo ($i-1)." Gemeinden importiert\n";
/*
@@ -69,6 +68,7 @@ echo ($i-1)." Gemeinden importiert\n";
$filename = "$folder/ORTSCHAFT.csv";
$input = fopen($filename, "r");
+$db->query("SET autocommit=0");
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
@@ -101,7 +101,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
}
-
+$db->query("COMMIT");
echo ($i-1)." Ortschaften importiert\n";
/*
@@ -111,6 +111,7 @@ echo ($i-1)." Ortschaften importiert\n";
$filename = "$folder/STRASSE.csv";
$input = fopen($filename, "r");
+$db->query("SET autocommit=0");
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
@@ -226,13 +227,15 @@ while($csv = fgetcsv($input, 0, ";")) {
}
}
-
+$db->query("COMMIT");
echo "\n".($i-1)." Straßen importiert\n";
$filename = "$folder/ADRESSE.csv";
$input = fopen($filename, "r");
+$db->query("SET autocommit=0");
+
$current_skz = false;
$current_gkz = false;
$sdata = [];
@@ -260,7 +263,7 @@ while($csv = fgetcsv($input, 0, ";")) {
$okz = trim($csv[2]);
$plz_string = trim($csv[3]);
$skz = trim($csv[4]);
-
+
$hnz1 = trim($csv[7]);
$hnb1 = trim($csv[8]);
$hnv = trim($csv[9]);
@@ -282,18 +285,16 @@ while($csv = fgetcsv($input, 0, ";")) {
"skz" => $skz,
"hausnummer" => $hausnummer_string
];
-
continue;
}
if($current_skz) {
- //var_dump($sdata);exit;
$gemeinde = getGemeinde($current_gkz);
if(!$gemeinde) {
die("Kann Adresse nicht importieren: Gemeinde nicht gefunden ($gkz)\n");
}
-
+
$strasse = getStrasse($current_skz);
if(!$strasse) {
die("Kann Adresse nicht importieren: Strasse nicht gefunden ($okz)\n");
@@ -301,11 +302,10 @@ while($csv = fgetcsv($input, 0, ";")) {
// do database work for all sdata
$hausnummern_filter = [];
-
+
foreach($sdata as $s) {
$plz = getPlz($s["plz"], $gemeinde->id);
if(!$plz) {
- //echo "Creating PLZ ".$s["plz"]."\n";
$plz = ADBPlzModel::create([
"gemeinde_id" => $gemeinde->id,
"plz" => $s["plz"],
@@ -325,8 +325,11 @@ while($csv = fgetcsv($input, 0, ";")) {
foreach($sdata as $shausnummer => $s) {
$found = false;
+ $ort = getOrtschaft($s['okz']);
+ if(!$ort->id) die("Ortschaft nicht gefunden ".$s['okz']);
+
foreach($hausnummern as $h) {
- if($h->hausnummer == $shausnummer) {
+ if($h->hausnummer == $shausnummer && $h->ortschaft_id = $ort->id) {
//exists already
$found = true;
@@ -344,6 +347,9 @@ while($csv = fgetcsv($input, 0, ";")) {
$new_hausnummern[$shausnummer] = $s;
}
}
+ $new_hausnummern = $sdata;
+
+
if(count($new_hausnummern)) {
$insert = "INSERT INTO `Hausnummer` (`netzgebiet_id`, `adrcd`, `ortschaft_id`, `plz_id`, `strasse_id`, `hausnummer`, `create`, `edit`) VALUES ";
@@ -351,7 +357,7 @@ while($csv = fgetcsv($input, 0, ";")) {
//var_dump($h_string, $s);exit;
//$h_string = $h->hausnummer;
//$s = $sdata[$h_string];
- $adrcd = $s["adrcd"];
+ $acode = $s["adrcd"];
$strasse_id = $strasse->id;
$plz = getPlz($s['plz'],$gemeinde->id);
if(!$plz) {
@@ -364,7 +370,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
$ortschaft_id = $ortschaft->id;
// add to INSERT statement
- $insert .= "(0, '$adrcd', $ortschaft_id, $plz_id, $strasse_id,'$h_string', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),";
+ $insert .= "(0, '$acode', $ortschaft_id, $plz_id, $strasse_id,'$h_string', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),";
}
$insert = preg_replace('/,$/', "", $insert);
@@ -373,44 +379,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
-
-
-
-
-
-
- /*
- $hausnummer = ADBHausnummerModel::getFirst([
- 'ortschaft_id' => $ortschaft->id,
- //'plz_id' => $plz->id,
- 'strasse_id' => $strasse->id,
- 'hausnummer' => $hausnummer_string
- ]);
-
- if($hausnummer) {
- // update plz if necessary
- //var_dump($hausnummer->plz);exit;
- if($hausnummer->plz->plz != $plz->plz ) {
- echo "Updating PLZ from ".$hausnummer->plz->plz." to ".$plz->plz."\n";
- $hausnummer->plz_id = $plz->id;
- $hausnummer->save();
- }
-
- } else {
- // create new Hausnummer
- $hausnummer = ADBHausnummerModel::create([
- "netzgebiet_id" => 0,
- "ortschaft_id" => $ortschaft->id,
- "plz_id" => $plz->id,
- "strasse_id" => $strasse->id,
- "hausnummer" => $hausnummer_string
- ]);
- if(!$hausnummer->save()) {
- die("Error creating Hausnummer: ".print_r($hausnummer, true));
- }
- }
- */
}
$current_skz = $skz;
@@ -502,14 +471,14 @@ function getStrasse($kz) {
function getPlz($plz_search, $gemeinde_id) {
global $plz_cache;
- if(array_key_exists("$plz_search.$gemeinde_id", $plz_cache)) {
- return $plz_cache["$plz_search.$gemeinde_id"];
+ if(array_key_exists("$plz_search-$gemeinde_id", $plz_cache)) {
+ return $plz_cache["$plz_search-$gemeinde_id"];
}
$plz = ADBPlzModel::getFirst(['plz' => $plz_search, "gemeinde_id" => $gemeinde_id]);
if(!$plz) {
return false;
}
- $plz_cache[$plz_search] = $plz;
+ $plz_cache["$plz_search-$gemeinde_id"] = $plz;
return $plz;
-}
\ No newline at end of file
+}