Files
thetool/application/AddressDB/AddressDB.php
2022-08-25 16:59:54 +02:00

111 lines
3.7 KiB
PHP

<?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;
}*/
}
}