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]); } }