WIP AddressDB + api
This commit is contained in:
111
application/AddressDB/AddressDB.php
Normal file
111
application/AddressDB/AddressDB.php
Normal file
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
class AddressDB {
|
||||
private $log;
|
||||
private $db;
|
||||
|
||||
public $data;
|
||||
|
||||
public function __contruct() {
|
||||
|
||||
}
|
||||
|
||||
public function findAddress($search) {
|
||||
if(!is_array($search)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$gemeinde_name = $search['gemeinde_name'];
|
||||
$ort_name = $search['ort_name'];
|
||||
$plz = $search['plz'];
|
||||
$strasse_name = $search['strasse_name'];
|
||||
$hausnummer = $search['hausnummer'];
|
||||
$block = $search['block'];
|
||||
$stiege = $search['stiege'];
|
||||
$stock = $search['stock'];
|
||||
$tuer = $search['tuee'];
|
||||
|
||||
/*
|
||||
if($gemeinde_id < 1 || $strasse_id < 1 || !$hausnummer
|
||||
|| $gemeinde_id > pow(2, 30) || $strasse_id > pow(2, 30) || strlen($hausnummer) > 32) {
|
||||
$this->redirect('Check','',['status' => 'error']);
|
||||
}*/
|
||||
|
||||
$hausnummerMatch = true;
|
||||
|
||||
$gemeinde = new Gemeinde($gemeinde_id);
|
||||
$strasse = new Strasse($strasse_id);
|
||||
|
||||
// try exact hausnummer
|
||||
$res = $this->db()->select("view_adresseProvider", "*", "gemeinde = '".$gemeinde->name."' AND strasse = '".$strasse->name."' AND hausnummer = '$hausnummer'");
|
||||
if(!$this->db()->num_rows($res)) {
|
||||
$hausnummerMatch = false;
|
||||
// check for anschlüsse in the same street
|
||||
$res = $this->db()->select("view_adresseProvider", "*", "gemeinde = '".$gemeinde->name."' AND strasse = '".$strasse->name."'");
|
||||
if(!$this->db()->num_rows($res)) {
|
||||
// XXX: if breitband stmk
|
||||
$this->layout()->setTemplate("Check/Result/Fail");
|
||||
|
||||
// xdsl anzeigen
|
||||
return $this->checkVull($request);
|
||||
}
|
||||
}
|
||||
|
||||
// if multiple hausnummern, anschluss in street available, or multiple providers
|
||||
if($this->db()->num_rows($res)) {
|
||||
$addresses = [];
|
||||
$providers = [];
|
||||
$homeProvider = false;
|
||||
$multipleAddress = false;
|
||||
|
||||
while($data = $this->db()->fetch_object($res)) {
|
||||
$addresses[] = new Hausnummer($data->id);
|
||||
if($data->provider_id == HOME_PROVIDER_ID) {
|
||||
$homeProvider = true;
|
||||
}
|
||||
if(!in_array($data->provider, $providers)) {
|
||||
$providers[$data->provider_id] = $data->provider;
|
||||
}
|
||||
if($data->hausnummer != $hausnummer) {
|
||||
$multipleAddress = true;
|
||||
}
|
||||
}
|
||||
|
||||
$pc = new ProductController();
|
||||
|
||||
if($homeProvider && $multipleAddress) {
|
||||
$this->layout()->set("debug", "multi hausnummern, homeprovider");
|
||||
$this->layout()->setTemplate("Check/Result/Street");
|
||||
return true;
|
||||
}
|
||||
if($homeProvider) {
|
||||
$this->layout()->set("debug", "single hausnummer, homeprovider");
|
||||
$this->layout()->setTemplate("Check/Result/Success");
|
||||
$this->layout()->set("productsPrivate", $pc->getProducts(1, "fiber", "privat"));
|
||||
$this->layout()->set("productsBusiness", $pc->getProducts(1, "fiber", "business"));
|
||||
if($data->status == 1) {
|
||||
$this->layout()->set("debug", "single hausnummer, homeprovider, rohr am grundstück");
|
||||
$this->layout()->setTemplate("Check/Result/Street");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if(!$homeProvider) {
|
||||
$this->layout()->set("providers", $providers);
|
||||
$this->layout()->set("debug", "single hausnummer, partner provider");
|
||||
$this->layout()->setTemplate("Check/Result/SuccessPartner");
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
} /*elseif($this->db()->num_rows($res) == 1 && $hausnummerMatch) {
|
||||
// exactly 1 match
|
||||
$data = $this->db()->fetch_object($res);
|
||||
$address = new Hausnummer($data->id);
|
||||
$this->layout()->set("adresse", $address);
|
||||
$this->layout()->set("debug", "single address, only homeprovider");
|
||||
$this->layout()->setTemplate("Check/Result/Success");
|
||||
return true;
|
||||
}*/
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user