WIP AddressDB/Export
This commit is contained in:
@@ -121,7 +121,7 @@
|
||||
<div class="col">
|
||||
<button type="submit" class="btn btn-primary">Filter anwenden</button>
|
||||
<a class="btn btn-secondary" href="<?=self::getUrl("AddressDB")?>">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</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
27
Layout/default/AddressDB/export.csv.php
Normal file
27
Layout/default/AddressDB/export.csv.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
ob_end_flush();
|
||||
header("Content-type: text/csv");
|
||||
header('Content-disposition: attachment; filename="addressdb-export-'.date('Y-m-d_H-i-s').'.csv"');
|
||||
?>
|
||||
AddressDB_ID;Extref;Adrcd;OAID;Neztgebiet_Extref;Netzgebiet;GKZ;Gemeinde;OKZ;Ortschaft;SKZ;Strasse;PLZ;Hausnummer;Grundstueck;GPS Breite; GPS Laenge;Rollout;Rollout_Info;Freigabe;Nutzungseinheiten
|
||||
<?php
|
||||
|
||||
while($data = mysqli_fetch_object($res)):
|
||||
$netzgebiet = new ADBNetzgebiet($data->netzgebiet_id);
|
||||
$strasse = new ADBStrasse($data->strasse_id);
|
||||
$gemeinde = new ADBGemeinde($strasse->gemeinde_id);
|
||||
$ortschaft = new ADBOrtschaft($data->ortschaft_id);
|
||||
$plz = new ADBPlz($data->plz_id);
|
||||
$freigabe_array = json_decode($data->freigabe);
|
||||
if(is_array($freigabe_array)) {
|
||||
$freigabe = join(", ", $freigabe_array);
|
||||
} else {
|
||||
$freigabe = "";
|
||||
}
|
||||
$unit_count = ADBWohneinheitModel::count(['hausnummer_id' => $data->id]);
|
||||
//$unit_count = 1;
|
||||
?>
|
||||
<?=$data->id?>;"<?=$data->extref?>";<?=$data->adrcd?>;"<?=$data->oaid?>";"<?=$netzgebiet->extref?>";"<?=$netzgebiet->name?>";<?=$gemeinde->kennziffer?>;"<?=$gemeinde->name?>";<?=$ortschaft->kennziffer?>;"<?=$ortschaft->name?>";<?=$strasse->kennziffer?>;"<?=$strasse->name?>";"<?=$plz->plz?>";"<?=$data->hausnummer?>";"<?=$data->grund_nr?>";<?=$data->gps_lat?>;<?=$data->gps_long?>;<?=$data->rollout?>;"<?=$data->rollout_info?>";"<?=$freigabe?>";<?=$unit_count?>;
|
||||
<?php
|
||||
flush();
|
||||
endwhile;
|
||||
@@ -64,7 +64,7 @@ class ADBHausnummerModel {
|
||||
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
|
||||
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
|
||||
WHERE $where
|
||||
ORDER BY strasse_id,LENGTH(hausnummer), hausnummer
|
||||
ORDER BY netzgebiet_id,Gemeinde.id,ortschaft_id,strasse_id,LENGTH(hausnummer), hausnummer
|
||||
LIMIT 1";
|
||||
|
||||
//mfLoghandler::singleton()->debug($where);
|
||||
@@ -118,7 +118,7 @@ class ADBHausnummerModel {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static function search($filter, $limit = false) {
|
||||
public static function search($filter, $limit = false, $returnDBRessource = false) {
|
||||
$items = [];
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
@@ -129,7 +129,7 @@ class ADBHausnummerModel {
|
||||
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
|
||||
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
|
||||
WHERE $where
|
||||
ORDER BY strasse_id,LENGTH(hausnummer), hausnummer";
|
||||
ORDER BY netzgebiet_id,Gemeinde.id,ortschaft_id,strasse_id,LENGTH(hausnummer), hausnummer";
|
||||
|
||||
mfLoghandler::singleton()->debug($sql);
|
||||
if(is_array($limit) && count($limit)) {
|
||||
@@ -144,6 +144,11 @@ class ADBHausnummerModel {
|
||||
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
|
||||
if($returnDBRessource) {
|
||||
return $res;
|
||||
}
|
||||
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new ADBHausnummer($data);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ class ADBWohneinheitModel {
|
||||
) as tbl
|
||||
";
|
||||
|
||||
mfLoghandler::singleton()->debug($sql);
|
||||
//mfLoghandler::singleton()->debug($sql);
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
@@ -108,7 +108,7 @@ class ADBWohneinheitModel {
|
||||
GROUP BY Wohneinheit.id
|
||||
ORDER BY hausnummer_id,block,stiege,LENGTH(stock),stock,LENGTH(tuer),tuer,num";
|
||||
|
||||
mfLoghandler::singleton()->debug($sql);
|
||||
//mfLoghandler::singleton()->debug($sql);
|
||||
if(is_array($limit) && count($limit)) {
|
||||
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
|
||||
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
|
||||
|
||||
@@ -25,7 +25,6 @@ class AddressDBController extends mfBaseController {
|
||||
|
||||
$this->layout->set("filter", $rfilter);
|
||||
|
||||
$where = "";
|
||||
$filter = $this->getPreparedFilter($rfilter);
|
||||
|
||||
// pagination defaults
|
||||
@@ -152,7 +151,7 @@ class AddressDBController extends mfBaseController {
|
||||
|
||||
if(is_array($filter) && count($filter)) {
|
||||
foreach($filter as $name => $value) {
|
||||
$new_filter[$name] = $value;
|
||||
if(strlen($value) > 0) $new_filter[$name] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -324,6 +323,56 @@ class AddressDBController extends mfBaseController {
|
||||
$this->layout()->setFlash("Adresse erfolgreich gespeichert", "success");
|
||||
$this->redirect("AddressDB", "Index", $qs);
|
||||
|
||||
}
|
||||
|
||||
protected function exportAction() {
|
||||
$rfilter = $this->request->filter;
|
||||
if(!is_array($rfilter)) {
|
||||
$rfilter = [];
|
||||
}
|
||||
$filter = $this->getPreparedFilter($rfilter);
|
||||
|
||||
|
||||
if($this->me->is("Admin")) {
|
||||
$my_networks = NetworkModel::getAll();
|
||||
} else {
|
||||
$my_networks = $this->me->myNetworks(["netowner", "salespartner"]);
|
||||
}
|
||||
|
||||
$netzgebiet_ids = [];
|
||||
$my_adb_networks = [];
|
||||
foreach($my_networks as $network) {
|
||||
if($network->adb_netzgebiet_id && !in_array($network->adb_netzgebiet_id, $netzgebiet_ids)) {
|
||||
$netzgebiet_ids[] = $network->adb_netzgebiet_id;
|
||||
$my_adb_networks[$network->adb_netzgebiet_id] = new ADBNetzgebiet($network->adb_netzgebiet_id);
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("network_id", $filter) && $filter['network_id']) {
|
||||
if($this->me->is("Admin")) {
|
||||
$filter['netzgebiet_id'] = $filter['network_id'];
|
||||
} else {
|
||||
if(in_array($filter['network_id'], $netzgebiet_ids)) {
|
||||
$filter['netzgebiet_id'] = $filter['network_id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($filter['network_id']);
|
||||
|
||||
$addressdb_filter = $filter;
|
||||
if(!array_key_exists("netzgebiet_id", $addressdb_filter)) {
|
||||
$addressdb_filter['netzgebiet_id'] = $netzgebiet_ids;
|
||||
}
|
||||
|
||||
$res = ADBHausnummerModel::search($addressdb_filter, [], true);
|
||||
|
||||
$this->layout()->setTemplate("AddressDB/export.csv");
|
||||
$this->layout()->set("res", $res);
|
||||
|
||||
//var_dump($filter, $hausnummern);exit;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected function apiAction() {
|
||||
|
||||
Reference in New Issue
Block a user