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

@@ -405,8 +405,15 @@ class AddressDBController extends mfBaseController {
$this->redirect("AddressDB");
}
protected function exportAction() {
return $this->export();
}
protected function exportHomesAction() {
return $this->export(true);
}
private function export($export_homes = false) {
$rfilter = $this->request->filter;
if(!is_array($rfilter)) {
$rfilter = [];
@@ -448,8 +455,13 @@ class AddressDBController extends mfBaseController {
// Get mysqli resource from Model so layout can output data as it's retrieved
// Fixes lousy performance and horrendous memory usage
$res = ADBHausnummerModel::search($addressdb_filter, [], true);
$this->layout()->setTemplate("AddressDB/export.csv");
if($export_homes) {
$this->layout()->setTemplate("AddressDB/export_homes.csv");
} else {
$this->layout()->setTemplate("AddressDB/export.csv");
}
$this->layout()->set("res", $res);
//var_dump($filter, $hausnummern);exit;
@@ -782,25 +794,36 @@ class AddressDBController extends mfBaseController {
private function findAddressApi() {
$addresses = [];
$search = trim($this->request->q);
$campagin_id = ($this->request->campaign_id);
$campaign = new Preordercampaign($campagin_id);
if(!$campaign->id) {
header("Content-Type: application/json");
echo json_encode(["results" => []]);
exit;
}
$campagin_id = $this->request->campaign_id;
$include_gst = $this->request->include_gst ? $this->request->include_gst : false;
$scluster_ids = [];
foreach($campaign->salesclusters as $scluster) {
$scluster_ids[] = $scluster->id;
if($campagin_id) {
$campaign = new Preordercampaign($campagin_id);
if(!$campaign->id) {
header("Content-Type: application/json");
echo json_encode(["results" => []]);
exit;
}
foreach($campaign->salesclusters as $scluster) {
$scluster_ids[] = $scluster->id;
}
} else {
// get all salesclusters
foreach(ADBNetzgebietModel::getAll() as $scluster) {
$scluster_ids[] = $scluster->id;
}
}
$results = [];
$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) {
$p = $this->db->escape(trim($p));
@@ -809,14 +832,21 @@ class AddressDBController extends mfBaseController {
$strasse_search[] = "strasse like '$p%'";
$plz_search[] = "plz like '%$p%'";
$hausnummer_search[] = "hausnummer like '%$p%'";
$gst_search[] = "grund_nr like '%$p%'";
}
$where = "1=1";
if(count($scluster_ids)) {
$where .= " AND netzgebiet_id IN (".implode(', ',$scluster_ids).")";
}
$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";
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";
}
$this->log->debug($sql);
$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)) {
$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;
$address = [];