added export feature constr consent

This commit is contained in:
Luca Haid
2025-05-07 14:07:08 +02:00
parent 4db4577c28
commit 5061255a01
3 changed files with 107 additions and 1 deletions
@@ -170,6 +170,10 @@ $pagination_entity_name = "Zustimmungserklärungen";
<?php endif; ?>
</div>
<div class="col text-right">
<a class="btn btn-outline-success" style="cursor: pointer" href="<?=self::getUrl("ConstructionConsent", "downloadCSV", ["filter" => $filter])?>">
<i class="fas fa-file-csv fa-fw" title="CSV Export" aria-hidden="true" class="mr-1 chevron-icon"></i>
CSV Export
</a>
<a class="btn btn-success text-white" style="cursor: pointer" data-toggle="modal" data-target="#downloadModal">
<i class="fas fa-download"></i> Zustimmungserklärungen herunterladen
</a>
@@ -115,7 +115,7 @@ class ConstructionConsent extends mfBaseModel {
public function getProperty($name) {
if($this->$name == null) {
if($this->$name == null && $name !== 'netzgebiet_id') {
if($name == "journal") {
$journal = ConstructionConsentJournal::search(["constructionconsent_id" => $this->id], false, "id DESC");
@@ -1145,4 +1145,106 @@ class ConstructionConsentController extends mfBaseController {
self::returnJson(["results" => $parsedNetworks]);
}
protected function downloadCSVAction() {
$filter = $this->request->filter;
if(!is_array($filter)) {
$this->layout()->setFlash("Fehler beim Erstellen der CSV", "error");
return $this->redirect("ConstructionConsent");
}
$filter = $this->getPreparedFilter($filter);
$items = ConstructionConsent::search($filter);
$filename = 'Zustimmungserklärungen_' . date('Ymd_His') . '.csv';
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . rawurlencode($filename) . '"');
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
$output = fopen('php://output', 'w');
fwrite($output, chr(0xEF) . chr(0xBB) . chr(0xBF)); // UTF-8 BOM for Excel
$headers = [
'Projekt',
'Objekttyp',
'Objektadresse',
'Name',
'EZ',
'KG',
'GST',
'GSTNR',
'RIMO GN',
'Nutzungslänge',
'Leerrohr am Grundstück',
'Leerrohr im Gebäude',
'Schacht',
'Eigentümer',
'Planer Besichtigung',
'Elektriker Besichtigung',
'Leerverrohrung im Gebäude installiert',
'Leerverrohrung bis FTU installiert',
'Inhouse Verkabelung',
'Anzahl Eigentümer',
'Notiz',
'Erstellt von',
'Geändert von',
'Erstellt am',
'Geändert am',
'Genehmigung überschrieben'
];
fputcsv($output, $headers, ',');
if ($items) {
foreach ($items as $item) {
$createUser = UserModel::getOne($item->create_by);
$editUser = UserModel::getOne($item->edit_by);
$address = "";
if($item->object_type == "street") {
$address = $item->adb_strasse->name . ", " . $item->adb_strasse->ortschaft->name . " " . $item->adb_strasse->gemeinde->name;
} else {
$address = $item->adb_hausnummer->strasse->name . " " . $item->adb_hausnummer->hausnummer . ($item->adb_hausnummer->stiege ? "/".$item->adb_hausnummer->stiege : "") . " " .
$item->adb_hausnummer->plz->plz . " " . $item->adb_hausnummer->ortschaft->name . " " .
$item->adb_hausnummer->strasse->gemeinde->name;
}
$row = [
$item->project->name,
$item->object_type === 'street' ? 'Straße' : 'Gebäude',
$address,
$item->name,
$item->ez,
$item->kg,
$item->gst,
$item->gstnr,
$item->rimo_gn,
$item->usage_length,
$item->usage_pipe_on_plot == 1 ? 'Ja' : 'Nein',
$item->usage_pipe_in_building == 1 ? 'Ja' : 'Nein',
$item->usage_manhole == 1 ? 'Ja' : 'Nein',
$item->usage_owner == 1 ? 'Ja' : 'Nein',
$item->inspection_planner > 0 ? date('d.m.Y H:i:s', $item->inspection_planner) : '',
$item->inspection_electrician > 0 ? date('d.m.Y H:i:s', $item->inspection_electrician) : '',
$item->conduit_installed_building > 0 ? date('d.m.Y H:i:s', $item->conduit_installed_building) : '',
$item->conduit_installed_ftu > 0 ? date('d.m.Y H:i:s', $item->conduit_installed_ftu) : '',
$item->inhouse_cabling > 0 ? date('d.m.Y H:i:s', $item->inhouse_cabling) : '',
$item->owners !== null ? count($item->owners) : '',
$item->note,
$createUser ? $createUser->name : '',
$editUser ? $editUser->name : '',
date('d.m.Y H:i:s', $item->create),
date('d.m.Y H:i:s', $item->edit),
$item->approve_override,
];
fputcsv($output, $row, ',');
}
}
fclose($output);
exit();
}
}