diff --git a/Layout/default/Contract/Index.php b/Layout/default/Contract/Index.php index 49db588f9..7a6251331 100644 --- a/Layout/default/Contract/Index.php +++ b/Layout/default/Contract/Index.php @@ -70,10 +70,10 @@
-

Liste aller aktiver Produkte

+

Liste aller aktiven Produkte

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 +}