Added findDistrict to AddressDB Api

This commit is contained in:
Frank Schubert
2022-11-09 13:26:48 +01:00
parent 52259c9b17
commit 6a0cc89a7b
@@ -18,6 +18,8 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$this->addRoute("/addressdb/findZip", "findZip", "POST");
$this->addRoute("/addressdb/findCity", "findCity", "GET");
$this->addRoute("/addressdb/findCity", "findCity", "POST");
$this->addRoute("/addressdb/findDistrict", "findDistrict", "GET");
$this->addRoute("/addressdb/findDistrict", "findDistrict", "POST");
$this->allowMissingOrigin = true;
}
@@ -68,6 +70,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
// search parameter is unofficially deprecated but still supported
$search = trim($get['search']);
$city = trim($get['city']);
$district = trim($get['district']);
$zip = trim($get['zip']);
if(!$city) {
@@ -82,6 +85,9 @@ class AddressdbApicontroller extends mfBaseApicontroller {
if($zip) {
$city_search['plz%'] = $zip;
}
if($district) {
$district_search['ortschaft%'] = $zip;
}
if(count($this->filter_salescluster_ids)) {
$city_search['netzgebiet_id'] = $this->filter_salescluster_ids;
@@ -99,6 +105,58 @@ class AddressdbApicontroller extends mfBaseApicontroller {
return mfResponse::Ok(['cities' => array_values($cities)]);
}
protected function findDistrict() {
// unofficially supporting GET and POST in v1
$get = array_merge($this->post, $this->get);
// search parameter is unofficially deprecated but still supported
$search = trim($get['search']);
$city = trim($get['city']);
$district = trim($get['district']);
$zip = trim($get['zip']);
if(!$district) {
$district = $search;
}
if(!$city && !$zip && !$district) {
return mfResponse::BadRequest(['message' => "No search parameters"]);
}
if($district) {
$city_search = ['ortschaft%' => $district];
}
if($city) {
$city_search = ['name%' => $city];
}
if($zip) {
$city_search['plz%'] = $zip;
}
if(count($this->filter_salescluster_ids)) {
$city_search['netzgebiet_id'] = $this->filter_salescluster_ids;
}
$cities = [];
foreach(ADBGemeindeModel::search($city_search) as $gem) {
$districts = [];
if($district) {
foreach(ADBOrtschaftModel::search(["gemeinde_id" => $gem->id, "name%" => $district]) as $ort) {
$districts[] = $ort->name;
}
} else {
foreach($gem->ortschaften as $ort) {
$districts[] = $ort->name;
}
}
$cities[$gem->name] = $districts;
}
return mfResponse::Ok(['cities' => $cities]);
}
protected function findZip() {
// unofficially supporting GET and POST in v1
$get = array_merge($this->post, $this->get);
@@ -182,6 +240,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$search_street = $this->db()->escape(trim($get['street']));
$search_zip = $this->db()->escape(trim($get['zip']));
$search_district = $this->db()->escape(trim($get['district']));
$search_city = $this->db()->escape(trim($get['city']));
$search_housenumber = $this->db()->escape(trim($get['housenumber']));
@@ -197,6 +256,9 @@ class AddressdbApicontroller extends mfBaseApicontroller {
if($search_zip) {
$where .= " AND plz like '%$search_zip%'";
}
if($search_district) {
$where .= " AND ortschaft like '%$search_district%'";
}
if($search_city) {
$where .= " AND gemeinde like '%$search_city%'";
}
@@ -229,6 +291,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$addresses[] = [
'zip' => $data->plz,
'city' => $data->gemeinde,
'district' => $data->ortschaft,
'street' => $data->strasse,
'housenumber' => $data->hausnummer,
'block' => $data->block,