Changes for ADBOrtschaft in preorder api

This commit is contained in:
Frank Schubert
2022-11-15 13:07:20 +01:00
parent 2d698160c0
commit 95707ab92a
5 changed files with 84 additions and 81 deletions

View File

@@ -70,10 +70,10 @@
<div class="card">
<div class="card-body mb-3">
<div class="float-left">
<h4 class="header-title">Liste aller aktiver Produkte</h4>
<h4 class="header-title">Liste aller aktiven Produkte</h4>
</div>
<div class="float-right">
<a class="btn btn-primary mb-2" href="<?=self::getUrl("Contract", "add")?>"><i class="fas fa-plus"></i> Neue Produkt anlegen</a>
<a class="btn btn-primary mb-2" href="<?=self::getUrl("Contract", "add")?>"><i class="fas fa-plus"></i> Neues Produkt anlegen</a>
</div>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>

View File

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

View File

@@ -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));
}

View File

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

View File

@@ -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;
}
}