Changes for Preorder:

- Added OAID to Hausnummer and Wohneinheit
- Added format parameter to /addressdb/findAddress
- Added additional fields to /addressdb/findAddress
- Updated api doc yaml
- Updated addressdb import scripts for Liezen
This commit is contained in:
Frank Schubert
2022-12-06 22:47:58 +01:00
parent d65e2c5f88
commit 5dbf05d55f
10 changed files with 8218 additions and 63 deletions
+108 -34
View File
@@ -298,6 +298,10 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$search_city = $this->db()->escape(trim($get['city']));
$search_housenumber = $this->db()->escape(trim($get['housenumber']));
$format = "flat";
if($get['format'] == "tree") {
$format = "tree";
}
if(!$search_street) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
@@ -332,51 +336,121 @@ class AddressdbApicontroller extends mfBaseApicontroller {
}
//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";
$sql = "SELECT * FROM view_wohneinheit WHERE $where ORDER BY plz, gemeinde, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(num), num, LENGTH(tuer), tuer";
$this->log->debug($sql);
$res = $this->db()->query($sql);
if($this->db()->num_rows($res)) {
while($data = $this->db()->fetch_object($res)) {
// get allowed preorderTypes
$ptypes = [];
if($data->freigabe) {
$freigaben = json_decode($data->freigabe);
if(is_array($freigaben) && count($freigaben)) {
foreach($freigaben as $freigabe) {
if(in_array($freigabe, $this->allowed_preordertypes)) {
$ptypes[] = $freigabe;
if($format == "flat") {
while($data = $this->db()->fetch_object($res)) {
// get unit count
$unit_count = ADBWohneinheitModel::count(['hausnummer_id' => $data->hausnummer_id]);
// get allowed preorderTypes
$ptypes = [];
if($data->freigabe) {
$freigaben = json_decode($data->freigabe);
if(is_array($freigaben) && count($freigaben)) {
foreach($freigaben as $freigabe) {
if(in_array($freigabe, $this->allowed_preordertypes)) {
$ptypes[] = $freigabe;
}
}
}
}
}
$housenumber = $data->hausnummer;
if($this->hausnummer_add_zusatz) {
if($data->zusatz) {
$housenumber .= " (".$data->zusatz.")";
$housenumber = $data->hausnummer;
if($this->hausnummer_add_zusatz) {
if($data->zusatz) {
$housenumber .= " (".$data->zusatz.")";
}
}
$addresses[] = [
'oaid' => $data->wohneinheit_oaid,
'building_oaid' => $data->hausnummer_oaid,
'zip' => $data->plz,
'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde,
'district' => $data->ortschaft,
'street' => $data->strasse,
'housenumber' => $housenumber,
'lot_number' => $data->grund_nr,
'building_unit_count' => (int)$unit_count,
'num' => (int)$data->num,
'block' => $data->block,
'stock' => $data->stock,
'stiege' => $data->stiege,
'tuer' => $data->tuer,
'zusatz' => $data->zusatz,
'gps_lat' => (float)$data->gps_lat,
'gps_long' => (float)$data->gps_long,
'rollout_year' => ($data->rollout) ? (int)$data->rollout : null,
'rollout_info' => $data->rollout_info,
'preorderTypes' => $ptypes
];
}
} else {
$tmp_addresses = [];
while($data = $this->db()->fetch_object($res)) {
$address_key = $data->hausnummer_id."-".$data->zusatz;
if(!array_key_exists($address_key, $tmp_addresses)) {
// get allowed preorderTypes
$ptypes = [];
if($data->freigabe) {
$freigaben = json_decode($data->freigabe);
if(is_array($freigaben) && count($freigaben)) {
foreach($freigaben as $freigabe) {
if(in_array($freigabe, $this->allowed_preordertypes)) {
$ptypes[] = $freigabe;
}
}
}
}
$housenumber = $data->hausnummer;
if($this->hausnummer_add_zusatz) {
if($data->zusatz) {
$housenumber .= " (".$data->zusatz.")";
}
}
$tmp_addresses[$address_key] = [
'oaid' => $data->hausnummer_oaid,
'zip' => $data->plz,
'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde,
'district' => $data->ortschaft,
'street' => $data->strasse,
'housenumber' => $housenumber,
'lot_number' => $data->grund_nr,
'building_unit_count' => 0,
'gps_lat' => (float)$data->gps_lat,
'gps_long' => (float)$data->gps_long,
'rollout_year' => ($data->rollout) ? (int)$data->rollout : null,
'rollout_info' => $data->rollout_info,
'preorderTypes' => $ptypes,
'units' => []
];
}
$tmp_addresses[$address_key]['units'][] = [
'oaid' => $data->wohneinheit_oaid,
'num' => (int)$data->num,
'block' => $data->block,
'stiege' => $data->stiege,
'stock' => $data->stock,
'tuer' => $data->tuer,
'zusatz' => $data->zusatz,
];
$tmp_addresses[$address_key]['building_unit_count']++;
}
foreach($tmp_addresses as $ta) {
$addresses[] = $ta;
}
$addresses[] = [
'zip' => $data->plz,
'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde,
'district' => $data->ortschaft,
'street' => $data->strasse,
'housenumber' => $housenumber,
'block' => $data->block,
'stock' => $data->stock,
'stiege' => $data->stiege,
'tuer' => $data->tuer,
'zusatz' => $data->zusatz,
'gps_lat' => $data->gps_lat,
'gps_long' => $data->gps_long,
'rollout_year' => ($data->rollout) ? (int)$data->rollout : null,
'rollout_info' => $data->rollout_info,
'preorderTypes' => $ptypes
];
}
}