Aded AdressDB Home Export

This commit is contained in:
Frank Schubert
2024-11-06 13:12:32 +01:00
parent 6afd6340ae
commit d6b7285d5d
4 changed files with 86 additions and 26 deletions

View File

@@ -155,7 +155,8 @@
<div class="col"> <div class="col">
<button type="submit" class="btn btn-primary">Filter anwenden</button> <button type="submit" class="btn btn-primary">Filter anwenden</button>
<a class="btn btn-secondary" href="<?=self::getUrl("AddressDB", "", ["resetFilter" => 1])?>">Filter zurücksetzen</a> <a class="btn btn-secondary" href="<?=self::getUrl("AddressDB", "", ["resetFilter" => 1])?>">Filter zurücksetzen</a>
<button type="submit" formaction="<?=self::getUrl("AddressDB", "export")?>" id="export-button" class="btn btn-outline-success ml-2"><i class="fas fa-download"></i> CSV-Export</button> <button type="submit" formaction="<?=self::getUrl("AddressDB", "export")?>" id="export-button" class="btn btn-outline-success ml-2"><i class="fas fa-download"></i> CSV-Export Gebäude</button>
<button type="submit" formaction="<?=self::getUrl("AddressDB", "exportHomes")?>" id="export-button-homes" class="btn btn-outline-success ml-2"><i class="fas fa-download"></i> CSV-Export Homes</button>
</div> </div>
</div> </div>
</form> </form>

View File

@@ -3,6 +3,7 @@
class ADBStatusflag extends mfBaseModel { class ADBStatusflag extends mfBaseModel {
private $value; private $value;
public $hausnummer_id; public $hausnummer_id;
public $wohneinheit_id;
public function init() { public function init() {
@@ -14,7 +15,9 @@ class ADBStatusflag extends mfBaseModel {
if($this->$name == null) { if($this->$name == null) {
if($name == "value") { if($name == "value") {
if(!$this->hausnummer_id) return null; if(!$this->hausnummer_id && !$this->wohneinheit_id) return null;
if($this->hausnummer_id) {
$value = ADBHausnummerStatusflagValueModel::getFirst(["hausnummer_id" => $this->hausnummer_id, "flag_id" => $this->id]); $value = ADBHausnummerStatusflagValueModel::getFirst(["hausnummer_id" => $this->hausnummer_id, "flag_id" => $this->id]);
if(!$value) { if(!$value) {
$value = ADBHausnummerStatusflagValueModel::create([ $value = ADBHausnummerStatusflagValueModel::create([
@@ -22,6 +25,16 @@ class ADBStatusflag extends mfBaseModel {
"flag_id" => $this->id "flag_id" => $this->id
]); ]);
} }
} elseif($this->wohneinheit_id) {
$value = ADBWohneinheitStatusflagValueModel::getFirst(["wohneinheit_id" => $this->wohneinheit_id, "flag_id" => $this->id]);
if(!$value) {
$value = ADBWohneinheitStatusflagValueModel::create([
"wohneinheit_id" => $this->wohneinheit_id,
"flag_id" => $this->id
]);
}
}
$this->value = $value; $this->value = $value;
return $this->value; return $this->value;
} }

View File

@@ -6,6 +6,7 @@ class ADBWohneinheit extends mfBaseModel {
private $rimo_workorders; private $rimo_workorders;
private $ftu_data; private $ftu_data;
private $status; private $status;
private $statusflags; // TODO
protected function init() { protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); $this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -276,6 +277,18 @@ class ADBWohneinheit extends mfBaseModel {
return $this->status; return $this->status;
} }
if($name == "statusflags") {
$flags = [];
foreach(ADBStatusflagModel::getAll() as $flag) {
$flag->wohneinheit_id = $this->id;
$flags[$flag->id] = $flag;
}
if(count($flags)) {
$this->statusflags = $flags;
}
return $this->statusflags;
}
$classname = ucfirst($name); $classname = ucfirst($name);
$idfield = $name."_id"; $idfield = $name."_id";
$this->$name = new $classname($this->$idfield); $this->$name = new $classname($this->$idfield);

View File

@@ -407,6 +407,13 @@ class AddressDBController extends mfBaseController {
} }
protected function exportAction() { protected function exportAction() {
return $this->export();
}
protected function exportHomesAction() {
return $this->export(true);
}
private function export($export_homes = false) {
$rfilter = $this->request->filter; $rfilter = $this->request->filter;
if(!is_array($rfilter)) { if(!is_array($rfilter)) {
$rfilter = []; $rfilter = [];
@@ -449,7 +456,12 @@ class AddressDBController extends mfBaseController {
// Fixes lousy performance and horrendous memory usage // Fixes lousy performance and horrendous memory usage
$res = ADBHausnummerModel::search($addressdb_filter, [], true); $res = ADBHausnummerModel::search($addressdb_filter, [], true);
if($export_homes) {
$this->layout()->setTemplate("AddressDB/export_homes.csv");
} else {
$this->layout()->setTemplate("AddressDB/export.csv"); $this->layout()->setTemplate("AddressDB/export.csv");
}
$this->layout()->set("res", $res); $this->layout()->set("res", $res);
//var_dump($filter, $hausnummern);exit; //var_dump($filter, $hausnummern);exit;
@@ -782,8 +794,12 @@ class AddressDBController extends mfBaseController {
private function findAddressApi() { private function findAddressApi() {
$addresses = []; $addresses = [];
$search = trim($this->request->q); $search = trim($this->request->q);
$campagin_id = ($this->request->campaign_id); $campagin_id = $this->request->campaign_id;
$include_gst = $this->request->include_gst ? $this->request->include_gst : false;
$scluster_ids = [];
if($campagin_id) {
$campaign = new Preordercampaign($campagin_id); $campaign = new Preordercampaign($campagin_id);
if(!$campaign->id) { if(!$campaign->id) {
header("Content-Type: application/json"); header("Content-Type: application/json");
@@ -791,16 +807,23 @@ class AddressDBController extends mfBaseController {
exit; exit;
} }
$scluster_ids = [];
foreach($campaign->salesclusters as $scluster) { foreach($campaign->salesclusters as $scluster) {
$scluster_ids[] = $scluster->id; $scluster_ids[] = $scluster->id;
} }
} else {
// get all salesclusters
foreach(ADBNetzgebietModel::getAll() as $scluster) {
$scluster_ids[] = $scluster->id;
}
}
$results = []; $results = [];
$search_parts = explode(" ", $search); $search_parts = explode(" ", $search);
$ort_search = $strasse_search = $plz_search = $hausnummer_search = []; $ort_search = $strasse_search = $plz_search = $hausnummer_search = $gst_search = [];
foreach($search_parts as $p) { foreach($search_parts as $p) {
$p = $this->db->escape(trim($p)); $p = $this->db->escape(trim($p));
@@ -809,6 +832,7 @@ class AddressDBController extends mfBaseController {
$strasse_search[] = "strasse like '$p%'"; $strasse_search[] = "strasse like '$p%'";
$plz_search[] = "plz like '%$p%'"; $plz_search[] = "plz like '%$p%'";
$hausnummer_search[] = "hausnummer like '%$p%'"; $hausnummer_search[] = "hausnummer like '%$p%'";
$gst_search[] = "grund_nr like '%$p%'";
} }
$where = "1=1"; $where = "1=1";
@@ -816,7 +840,13 @@ class AddressDBController extends mfBaseController {
$where .= " AND netzgebiet_id IN (".implode(', ',$scluster_ids).")"; $where .= " AND netzgebiet_id IN (".implode(', ',$scluster_ids).")";
} }
if($include_gst) {
$sql = "SELECT * FROM view_hausnummer WHERE $where AND ((".implode(" OR ", $ort_search).") OR (".implode(" OR ", $strasse_search).") OR (".implode(" OR ", $plz_search).") OR (".implode(" OR ", $hausnummer_search).") OR (".implode(" OR ", $gst_search).") ) ORDER BY strasse, LENGTH(hausnummer), hausnummer";
} else {
$sql = "SELECT * FROM view_hausnummer WHERE $where AND ((".implode(" OR ", $ort_search).") OR (".implode(" OR ", $strasse_search).") OR (".implode(" OR ", $plz_search).") OR (".implode(" OR ", $hausnummer_search).")) ORDER BY strasse, LENGTH(hausnummer), hausnummer"; $sql = "SELECT * FROM view_hausnummer WHERE $where AND ((".implode(" OR ", $ort_search).") OR (".implode(" OR ", $strasse_search).") OR (".implode(" OR ", $plz_search).") OR (".implode(" OR ", $hausnummer_search).")) ORDER BY strasse, LENGTH(hausnummer), hausnummer";
}
$this->log->debug($sql); $this->log->debug($sql);
$adb = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); $adb = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -831,6 +861,9 @@ class AddressDBController extends mfBaseController {
while($data = $adb->fetch_object($res)) { while($data = $adb->fetch_object($res)) {
$address_string = $data->plz." ".$data->ortschaft.", ".$data->strasse." ".$data->hausnummer; $address_string = $data->plz." ".$data->ortschaft.", ".$data->strasse." ".$data->hausnummer;
if($include_gst) {
$address_string .= " | GST: ".$data->grund_nr;
}
$sort_key = $data->plz." ".$data->ortschaft." ".$data->strasse; $sort_key = $data->plz." ".$data->ortschaft." ".$data->strasse;
$address = []; $address = [];