Added findDistrict to AddressDB Api
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user