Added Preorder Export

This commit is contained in:
Frank Schubert
2023-03-09 19:06:32 +01:00
parent 88dbea9f79
commit 852be346ec
5 changed files with 131 additions and 6 deletions

View File

@@ -24,7 +24,6 @@ class PreorderController extends mfBaseController {
$this->layout->set("filter", $rfilter);
$where = "";
$filter = $this->getPreparedFilter($rfilter);
// pagination defaults
@@ -37,7 +36,6 @@ class PreorderController extends mfBaseController {
$pagination['start'] = intval($this->request->s);
}
$preorder_filter = $filter;
$my_campaigns = [];
$my_campaign_ids = [];
@@ -110,17 +108,17 @@ class PreorderController extends mfBaseController {
$new_filter['add-where'] = "";
if(array_key_exists("address", $filter)) {
if(array_key_exists("address", $filter) && $filter["address"]) {
$address = $this->db()->escape($filter['address']);
$new_filter['add-where'] .= " AND (adb_hausnummer.gemeinde like '%$address%' OR adb_hausnummer.plz like '%$address%' OR adb_hausnummer.strasse like '%$address%')";
}
if(array_key_exists("hausnummer", $filter)) {
if(array_key_exists("hausnummer", $filter) && $filter["hausnummer"]) {
$hausnummer = $this->db()->escape($filter['hausnummer']);
$new_filter['hausnummer'] = $hausnummer;
}
if(array_key_exists("kunde", $filter)) {
if(array_key_exists("kunde", $filter) && $filter["kunde"]) {
$kunde = $this->db()->escape($filter['kunde']);
$new_filter['add-where'] .= " AND (company like '%$kunde%' OR firstname like '%$kunde%' OR lastname like '%$kunde%' OR concat(firstname, ' ', lastname) like '%$kunde%' OR concat(lastname, ' ', firstname) like '%$kunde%' OR street like '%$kunde%' OR zip like '%$kunde%' OR city like '%$kunde%')";
}
@@ -603,6 +601,70 @@ class PreorderController extends mfBaseController {
}
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']);
$preorder_filter = $filter;
/*if(!array_key_exists("netzgebiet_id", $preorder_filter)) {
$preorder_filter['netzgebiet_id'] = $netzgebiet_ids;
}*/
$campaign_ids = [];
foreach(PreordercampaignModel::search(["netzgebiet_id" => $netzgebiet_ids]) as $campaign) {
if(!in_array($campaign->id, $campaign_ids)) {
$campaign_ids[] = $campaign->id;
}
}
if(array_key_exists("preordercampaign_id", $filter) && in_array($filter['preordercampaign_id'], $campaign_ids)) {
$preorder_filter["preordercampaign_id"] = $filter['preordercampaign_id'];
} else {
$preorder_filter["preordercampaign_id"] = $campaign_ids;
}
$preorder_filter['<status_code'] = 800;
//var_dump($filter, $preorder_filter);exit;
// Get mysqli resource from Model, so layout can output data as it's retrieved
// Works around lousy performance and horrendous memory usage
$res = PreorderModel::search($preorder_filter, [], true);
$this->layout()->setTemplate("Preorder/export.csv");
$this->layout()->set("res", $res);
}
protected function apiAction() {
if(!$this->me->is(["Admin","netowner","salespartner"])) {
$this->redirect("Dashboard");