Added preorder export api (for specific user)

This commit is contained in:
Frank Schubert
2024-05-16 16:44:49 +02:00
parent 29459e9cca
commit 630e618733
2 changed files with 53 additions and 3 deletions

View File

@@ -1,7 +1,9 @@
<?php
ob_end_flush();
header("Content-type: text/csv");
header('Content-disposition: attachment; filename="preorder-export-'.date('Y-m-d_H-i-s').'.csv"');
if(!$no_filename) {
header('Content-disposition: attachment; filename="preorder-export-' . date('Y-m-d_H-i-s') . '.csv"');
}
?>
Kampagne;Netzgebiet ID;Netzgebiet;Extref;Bestellcode;OAID;Bestelldatum;Bestelltyp;Status Code; Status Name;Anschlusstyp;GWR Adresscode;Meridian;RW;HW;Anschluss Strasse;Anschluss Hausnummer;Anschluss PLZ;Anschluss Ort;Anschluss Wohneinheit;GPS Breite;GPS Länge;Anzahl Anschlüsse;Kunde Firma;Kunde UID;Kunde Vorname;Kunde Nachname;Kunde Strasse;Kunde PLZ;Kunde Ort;Kunde Telefon;Kunde Email;Partner;CIF Token;Cif Url; Cif Cable Url;Addon Lehrverrohrung Grundstück;Addon Hausverkabelung;BEP festgelegt;Starterpaket erhalten;Erstellt;Letzte Bearbeitung
<?php

View File

@@ -48,11 +48,13 @@ class PreorderApicontroller extends mfBaseApicontroller {
$this->addRoute("/preorder/open", "getOpenPreorders", "GET");
$this->addRoute("/preorder/customerInstallationFeedback", [$modules["Cif"], "getCifData"], "GET");
$this->addRoute("/preorder/customerInstallationFeedback", [$modules["Cif"], "userSetCif"], "POST");
$this->addRoute("/preorder/fullexport", "exportPreorders", "GET");
$this->addRoute("/preorder/:code/clientInstallationFinished", [$modules["Cif"], "providerSetCif"], "POST");
$this->addRoute("/preorder/:code/serviceActivated", [$modules["Activation"], "setServiceActive"], "POST");
$this->addRoute("/preorder/:code", "getPreorder", "GET");
$this->addRoute("/preorder/:code", "cancelPreorder", "DELETE");
}
@@ -118,7 +120,53 @@ class PreorderApicontroller extends mfBaseApicontroller {
$this->allowed_preordertypes = array_unique($this->allowed_preordertypes);
}
protected function exportPreorders() {
if($this->me->username != 'r.eschner@rmlinfrastruktur.at') {
return mfResponse::Forbidden();
}
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->id;
$my_adb_networks[$network->adb_netzgebiet_id] = new ADBNetzgebiet($network->adb_netzgebiet_id);
}
}
$preorder_filter = [];
$campaign_ids = [];
foreach(PreordercampaignModel::search(["network_id" => $netzgebiet_ids]) as $campaign) {
if(!in_array($campaign->id, $campaign_ids)) {
$campaign_ids[] = $campaign->id;
}
}
$preorder_filter["preordercampaign_id"] = $campaign_ids;
// Get mysqli resource from Model, so layout can output data as it's retrieved
// Works around lousy performance and horrendous memory usage
$res = PreorderModel::searchActive($preorder_filter, [], true);
$tpl = new Layout();
$tpl->setTemplate("Preorder/export.csv");
$tpl->set("res", $res);
$tpl->set("no_filename", true);
$tpl->display();
//$csv = $tpl->render();
//echo $csv;
exit;
}
protected function getOpenPreorders() {
$ts = $this->get['ts'];