Files
thetool/application/Api/v1/AddressdbApicontroller.php
2022-08-29 17:14:55 +02:00

120 lines
3.5 KiB
PHP

<?php
class AddressdbApicontroller extends mfBaseApicontroller {
protected function init() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->addRoute("/addressdb/findAddress", "find", "POST");
$this->addRoute("/addressdb/findStreet", "findStreet", "POST");
$this->addRoute("/addressdb/findZip", "findZip", "POST");
$this->addRoute("/addressdb/findCity", "findCity", "POST");
}
protected function findCity() {
$search = $this->db()->escape($this->post['search']);
if(!$search) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$results = ADBOrtschaftModel::search(['name%' => $search], ['count' => 20]);
$cities = [];
foreach($results as $result) {
$cities[] = $result->name;
}
$citiesv= array_unique($cities);
return mfResponse::Ok(['cities' => $cities]);
}
protected function findZip() {
$search = $this->db()->escape($this->post['search']);
if(!$search) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$results = ADBPlzModel::search(['plzstring%' => $search], ['count' => 20]);
$zips = [];
foreach($results as $result) {
$zips[] = $result->plz;
}
$zips = array_unique($zips);
return mfResponse::Ok(['zips' => $zips]);
}
protected function findStreet() {
$search = $this->db()->escape($this->post['search']);
if(!$search) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$results = ADBStrasseModel::search(['name%' => $search], ['count' => 20]);
$streets = [];
foreach($results as $result) {
$streets[] = $result->name;
}
$streets = array_unique($streets);
return mfResponse::Ok(['streets' => $streets]);
}
protected function find() {
$search_street = $this->db()->escape($this->post['street']);
$search_zip = $this->db()->escape($this->post['zip']);
$search_city = $this->db()->escape($this->post['city']);
$search_housenumber = $this->db()->escape($this->post['housenumber']);
if(!$search_street) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$addresses = [];
$where = "1 = 1";
if($search_zip) {
$where .= " AND plz like '%$search_zip%'";
}
if($search_city) {
$where .= " AND ortschaft like '%$search_city%'";
}
if($search_street) {
$where .= " AND strasse like '%$search_street%'";
}
if($search_housenumber) {
$where .= " AND hausnummer like '%$search_housenumber%'";
}
//$res = $this->db()->select("view_wohneinheit_plz", "*", $where);
$sql = "SELECT * FROM view_wohneinheit WHERE $where ORDER BY plz, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(tuer), tuer LIMIT 20";
//echo $sql;exit;
$res = $this->db()->query($sql);
if($this->db()->num_rows($res)) {
while($data = $this->db()->fetch_object($res)) {
$addresses[] = [
'zip' => $data->plz,
'city' => $data->ortschaft,
'street' => $data->strasse,
'housenumber' => $data->hausnummer,
'block' => $data->block,
'stock' => $data->stock,
'stiege' => $data->stiege,
'tuer' => $data->tuer,
'zusatz' => $data->zusatz
];
}
}
return mfResponse::Ok(['addresses' => $addresses]);
}
}