184 lines
6.9 KiB
PHP
184 lines
6.9 KiB
PHP
<?php
|
|
|
|
class PreorderconstructionApicontroller extends mfBaseApicontroller {
|
|
|
|
public function init() {
|
|
$this->addRoute("/preorderconstruction/address", "getAddresses", "GET");
|
|
$this->addRoute("/preorderconstruction/preorder", "getPreorders", "GET");
|
|
}
|
|
|
|
protected function authenticated() {
|
|
if($this->me->username != "preorder-construction-api-slc") {
|
|
return \mfResponse::Forbidden();
|
|
}
|
|
}
|
|
|
|
protected function getAddresses() {
|
|
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
|
|
|
/*if($this->me->username != 'r.eschner@rmlinfrastruktur.at') {
|
|
return mfResponse::Forbidden();
|
|
}*/
|
|
|
|
$adb_network_ids = [];
|
|
|
|
$user_network_ids = $this->me->getFlag("preorder_networks")->value();
|
|
if(!$user_network_ids) {
|
|
return mfResponse::Ok([]);
|
|
}
|
|
|
|
$user_network_ids = json_decode($user_network_ids);
|
|
//var_dump($user_network_ids);exit;
|
|
if(!is_array($user_network_ids) || !count($user_network_ids)) {
|
|
return mfResponse::Ok([]);
|
|
}
|
|
|
|
foreach($user_network_ids as $network_id) {
|
|
$network = new Network($network_id);
|
|
if(!$network->id) continue;
|
|
if(!$network->adb_netzgebiet_id) continue;
|
|
$adb_network_ids[] = $network->adb_netzgebiet_id;
|
|
}
|
|
|
|
|
|
$sd_terms = [];
|
|
$md_terms = [];
|
|
|
|
foreach(TT_ADB_GDA_TYPES as $term => $type) {
|
|
if($type == "sd") $sd_terms[] = $term;
|
|
if($type == "md") $md_terms[] = $term;
|
|
}
|
|
|
|
//var_dump($adb_network_ids);exit;
|
|
$sql = "SELECT Hausnummer.*, COUNT(Wohneinheit.id) as unit_count FROM Hausnummer
|
|
LEFT JOIN Wohneinheit ON (Wohneinheit.hausnummer_id = Hausnummer.id)
|
|
WHERE netzgebiet_id IN (".implode(",", $adb_network_ids).")
|
|
AND (rimo_type IN ('".implode("', '" ,$md_terms)."')
|
|
OR ((rimo_type IS NULL OR rimo_type='') AND gdaeigenschaft IN ('".implode("', '" ,$md_terms)."')))
|
|
GROUP BY Hausnummer.id,Wohneinheit.id";
|
|
//echo "$sql\n";exit;
|
|
$res = $db->query($sql);
|
|
|
|
$stati = [];
|
|
$netzgebiete = [];
|
|
$ortschaften = [];
|
|
$gemeinden = [];
|
|
$strassen = [];
|
|
$plzs = [];
|
|
$addresses = [];
|
|
|
|
while($data = $db->fetch_object($res)) {
|
|
if(!array_key_exists($data->netzgebiet_id, $netzgebiete)) {
|
|
$netzgebiete[$data->netzgebiet_id] = new ADBNetzgebiet($data->netzgebiet_id);
|
|
}
|
|
$netzgebiet = $netzgebiete[$data->netzgebiet_id];
|
|
|
|
if(!array_key_exists($data->ortschaft_id, $ortschaften)) {
|
|
$ortschaften[$data->ortschaft_id] = new ADBOrtschaft($data->ortschaft_id);
|
|
}
|
|
$ortschaft = $ortschaften[$data->ortschaft_id];
|
|
|
|
if(!array_key_exists($data->strasse_id, $strassen)) {
|
|
$strassen[$data->strasse_id] = new ADBStrasse($data->strasse_id);
|
|
}
|
|
$strasse = $strassen[$data->strasse_id];
|
|
|
|
if(!array_key_exists($strassen[$data->strasse_id]->gemeinde_id, $gemeinden)) {
|
|
$gemeinden[$strasse->gemeinde_id] = new ADBGemeinde($strasse->gemeinde_id);
|
|
}
|
|
$gemeinde = $gemeinden[$strasse->gemeinde_id];
|
|
|
|
if(!array_key_exists($data->plz_id, $plzs)) {
|
|
$plzs[$data->plz_id] = new ADBPlz($data->plz_id);
|
|
}
|
|
$plz = $plzs[$data->plz_id];
|
|
|
|
if(!array_key_exists($data->status_id, $stati)) {
|
|
$stati[$data->status_id] = new ADBStatus($data->status_id);
|
|
}
|
|
$status = $stati[$data->status_id]->getApiArray();
|
|
//$status->flags = [];
|
|
|
|
foreach(ADBHausnummerStatusflagValueModel::search(["hausnummer_id" => $data->id]) as $sflag) {
|
|
$status["flags"][] = [
|
|
"code" => (int)$sflag->flag->code,
|
|
"text" => $sflag->flag->name,
|
|
"value" => ($sflag->value == 1)
|
|
];
|
|
}
|
|
|
|
$address = [];
|
|
$address["id"] = (int)$data->id;
|
|
$address["extref"] = $data->extref;
|
|
$address["adrcd"] = $data->adrcd;
|
|
$address["oaid"] = $data->oaid;
|
|
$address["status"] = $status;
|
|
$address["netzgebiet_extref"] = $netzgebiet->extref;
|
|
$address["netzgebiet_name"] = $netzgebiet->name;
|
|
$address["rimo_external_id"] = $data->rimo_id;
|
|
$address["skz"] = (int)$strasse->kennziffer;
|
|
$address["strasse"] = $strasse->name;
|
|
$address["hausnummer"] = $data->hausnummer;
|
|
$address["plz"] = $plz->plz;
|
|
$address["okz"] = (int)$ortschaft->kennziffer;
|
|
$address["ortschaft"] = $ortschaft->name;
|
|
$address["gkz"] = (int)$gemeinde->kennziffer;
|
|
$address["gemeinde"] = $gemeinde->name;
|
|
$address["grundstueck"] = $data->grund_nr;
|
|
$address["gps"] = [
|
|
"lat" => $data->gps_lat,
|
|
"long" => $data->gps_long,
|
|
];
|
|
$address["rollout"] = $data->rollout;
|
|
$address["rollout_info"] = $data->rollout_info;
|
|
$address["freigabe"] = ($data->freigabe) ? json_decode($data->freigabe) : null;
|
|
$address["nutzungseinheiten"] = (int)$data->unit_count;
|
|
$address["gdaeigenschaft"] = $data->gdaeigenschaft;
|
|
$address["meridian"] = $data->meridian;
|
|
$address["rw"] = $data->rw;
|
|
$address["hw"] = $data->hw;
|
|
$address["order_api_visibility"] = $data->visibility;
|
|
$address['created'] = date("c", $data->create);
|
|
$address['created_ts'] = (int)$data->create;
|
|
$address['updated'] = date("c", $data->edit);
|
|
$address['updated_ts'] = (int)$data->edit;
|
|
|
|
$addresses[] = $address;
|
|
}
|
|
|
|
return mfResponse::Ok(["addresses" => $addresses]);
|
|
}
|
|
|
|
protected function getPreorders() {
|
|
$campaign_ids = [];
|
|
|
|
$user_network_ids = $this->me->getFlag("preorder_networks")->value();
|
|
if(!$user_network_ids) {
|
|
return mfResponse::Ok([]);
|
|
}
|
|
|
|
$user_network_ids = json_decode($user_network_ids);
|
|
//var_dump($user_network_ids);exit;
|
|
if(!is_array($user_network_ids) || !count($user_network_ids)) {
|
|
return mfResponse::Ok([]);
|
|
}
|
|
|
|
foreach($user_network_ids as $network_id) {
|
|
foreach(PreordercampaignModel::search(["network_id" => $network_id]) as $campaign) {
|
|
$campaign_ids[] = $campaign->id;
|
|
}
|
|
}
|
|
|
|
//var_dump($campaign_ids);exit;
|
|
|
|
$preorders = [];
|
|
foreach(PreorderModel::searchActive(["preordercampaign_id" => $campaign_ids]) as $preorder) {
|
|
$preorders[] = $preorder->getApiArray(["full_home"]);
|
|
}
|
|
|
|
|
|
return mfResponse::Ok(["preorders" => $preorders]);
|
|
|
|
}
|
|
|
|
} |