From fe93815b1a0e92ee1d048ef3ff4cb4930101e93f Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Fri, 11 Nov 2022 13:59:53 +0100 Subject: [PATCH] Added ordered addon services download in preordercampaign --- Layout/default/Preordercampaign/Index.php | 1 + application/ADBGemeinde/ADBGemeinde.php | 33 ++++++++++++++++++- application/ADBGemeinde/ADBGemeindeModel.php | 19 +++++++++-- application/ADBHausnummer/ADBHausnummer.php | 6 ++++ application/ADBOrtschaft/ADBOrtschaft.php | 2 +- .../ADBOrtschaft/ADBOrtschaftModel.php | 5 +-- application/ADBPlz/ADBPlzModel.php | 15 ++++----- application/ADBStrasse/ADBStrasseModel.php | 6 ++-- .../PreordercampaignController.php | 31 +++++++++++++++-- 9 files changed, 99 insertions(+), 19 deletions(-) diff --git a/Layout/default/Preordercampaign/Index.php b/Layout/default/Preordercampaign/Index.php index addcbf490..14cc3dfa2 100644 --- a/Layout/default/Preordercampaign/Index.php +++ b/Layout/default/Preordercampaign/Index.php @@ -109,6 +109,7 @@ from)?> to)?> + $camp->id])?>" title="Bestellte Zusatzdienste exportieren"> $camp->id])?>"> $camp->id])?>" class="text-danger" onclick="if(!confirm('Vorbestellkampagne wirklich löschen?')) return false;" title="Vorbestellkampagne Löschen"> diff --git a/application/ADBGemeinde/ADBGemeinde.php b/application/ADBGemeinde/ADBGemeinde.php index a32bec397..7297e745f 100644 --- a/application/ADBGemeinde/ADBGemeinde.php +++ b/application/ADBGemeinde/ADBGemeinde.php @@ -2,7 +2,7 @@ class ADBGemeinde extends mfBaseModel { public $plzs = []; - + private $ortschaften = []; protected function init() { $this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); @@ -66,4 +66,35 @@ class ADBGemeinde extends mfBaseModel { } return $list; } + + public function getProperty($name) { + if($this->$name == null) { + + if(!$this->id) { + return null; + } + + if($name == "types") { + $this->loadAddresstypes(); + return $this->types; + } + + if($name == "ortschaften") { + $this->ortschaften = ADBOrtschaftModel::search(["gemeinde_id" => $this->id]); + return $this->ortschaften; + } + + $classname = ucfirst($name); + $idfield = $name."_id"; + $this->$name = new $classname($this->$idfield); + + if($this->$name->id) { + return $this->$name; + } else { + return null; + } + } + + return $this->$name; + } } diff --git a/application/ADBGemeinde/ADBGemeindeModel.php b/application/ADBGemeinde/ADBGemeindeModel.php index 3013c3ef8..1b10fac47 100644 --- a/application/ADBGemeinde/ADBGemeindeModel.php +++ b/application/ADBGemeinde/ADBGemeindeModel.php @@ -94,6 +94,7 @@ class ADBGemeindeModel { LEFT JOIN Plz ON (Plz.gemeinde_id = Gemeinde.id) LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Gemeinde.id) LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id) + LEFT JOIN Ortschaft ON (Ortschaft.gemeinde_id = Gemeinde.id) WHERE $where GROUP BY Gemeinde.id ORDER BY name,code,kennziffer"; @@ -157,7 +158,7 @@ class ADBGemeindeModel { if(array_key_exists("name%", $filter)) { $name = FronkDB::singleton()->escape($filter['name%']); if($name) { - $where .= " AND Gemeinde.`name` like '%$name%'"; + $where .= " AND Gemeinde.`name` like '$name%'"; } } @@ -171,7 +172,21 @@ class ADBGemeindeModel { if(array_key_exists("plz%", $filter)) { $plz = FronkDB::singleton()->escape($filter['plz%']); if($plz) { - $where .= " AND Plz.plzstring like '%$plz%'"; + $where .= " AND Plz.plzstring like '$plz%'"; + } + } + + if(array_key_exists("ortschaft", $filter)) { + $ortschaft = FronkDB::singleton()->escape($filter['ortschaft']); + if($ortschaft) { + $where .= " AND Plz.ortschaft = '$ortschaft'"; + } + } + + if(array_key_exists("ortschaft%", $filter)) { + $ortschaft = FronkDB::singleton()->escape($filter['ortschaft%']); + if($ortschaft) { + $where .= " AND Plz.ortschaft like '$ortschaft%'"; } } diff --git a/application/ADBHausnummer/ADBHausnummer.php b/application/ADBHausnummer/ADBHausnummer.php index de3a1fea9..39cf674f4 100644 --- a/application/ADBHausnummer/ADBHausnummer.php +++ b/application/ADBHausnummer/ADBHausnummer.php @@ -1,6 +1,7 @@ freigaben; } + if($name == "ortschaft") { + $this->ortschaft = new ADBOrtschaft($this->ortschaft_id); + return $this->ortschaft; + } + if($name == "strasse") { $this->strasse = new ADBStrasse($this->strasse_id); return $this->strasse; diff --git a/application/ADBOrtschaft/ADBOrtschaft.php b/application/ADBOrtschaft/ADBOrtschaft.php index 9b0d77139..fdb1b48bf 100644 --- a/application/ADBOrtschaft/ADBOrtschaft.php +++ b/application/ADBOrtschaft/ADBOrtschaft.php @@ -31,7 +31,7 @@ class ADBOrtschaft extends mfBaseModel { if($this->$name == null) { if($name == "gemeinde") { - $this->gemeinde = new ADBGemeinde($this->hausnummer_id); + $this->gemeinde = new ADBGemeinde($this->gemeinde_id); return $this->gemeinde; } diff --git a/application/ADBOrtschaft/ADBOrtschaftModel.php b/application/ADBOrtschaft/ADBOrtschaftModel.php index 48bfc9a2c..65b9544ff 100644 --- a/application/ADBOrtschaft/ADBOrtschaftModel.php +++ b/application/ADBOrtschaft/ADBOrtschaftModel.php @@ -92,8 +92,9 @@ class ADBOrtschaftModel { $where = self::getSqlFilter($filter); $sql = "SELECT Ortschaft.* FROM Ortschaft + LEFT JOIN Gemeinde ON (Ortschaft.gemeinde_id = Gemeinde.id) WHERE $where - ORDER BY name,kennziffer"; + ORDER BY gemeinde_id,Ortschaft.name,Ortschaft.kennziffer"; //mfLoghandler::singleton()->debug($sql); if(is_array($limit) && count($limit)) { @@ -149,7 +150,7 @@ class ADBOrtschaftModel { if(array_key_exists("name%", $filter)) { $name = FronkDB::singleton()->escape($filter['name%']); if($name) { - $where .= " AND Ortschaft.`name` like '%$name%'"; + $where .= " AND Ortschaft.`name` like '$name%'"; } } diff --git a/application/ADBPlz/ADBPlzModel.php b/application/ADBPlz/ADBPlzModel.php index db558f741..6514993a4 100644 --- a/application/ADBPlz/ADBPlzModel.php +++ b/application/ADBPlz/ADBPlzModel.php @@ -119,7 +119,6 @@ class ADBPlzModel { private static function getSqlFilter($filter) { $where = "1=1 "; - if(array_key_exists("netzgebiet_id", $filter)) { $netzgebiet_id = $filter['netzgebiet_id']; if(is_numeric($netzgebiet_id)) { @@ -129,12 +128,12 @@ class ADBPlzModel { } } - if(array_key_exists("hausnummer_id", $filter)) { - $hausnummer_id = $filter['hausnummer_id']; - if(is_numeric($hausnummer_id)) { - $where .= " AND Plz.hausnummer_id=$hausnummer_id"; - } elseif(is_array($hausnummer_id) && count($hausnummer_id)) { - $where .= " AND Plz.hausnummer_id IN (". implode(",", $hausnummer_id).")"; + if(array_key_exists("gemeinde_id", $filter)) { + $gemeinde_id = $filter['gemeinde_id']; + if(is_numeric($gemeinde_id)) { + $where .= " AND Plz.gemeinde_id=$gemeinde_id"; + } elseif(is_array($gemeinde_id) && count($gemeinde_id)) { + $where .= " AND Plz.gemeinde_id IN (". implode(",", $gemeinde_id).")"; } } @@ -157,7 +156,7 @@ class ADBPlzModel { if(array_key_exists("plzstring%", $filter)) { $plzstring = FronkDB::singleton()->escape($filter['plzstring%']); if($plzstring) { - $where .= " AND Plz.`plzstring` like '%$plzstring%'"; + $where .= " AND Plz.`plzstring` like '$plzstring%'"; } } diff --git a/application/ADBStrasse/ADBStrasseModel.php b/application/ADBStrasse/ADBStrasseModel.php index 1419ad321..9b33eac79 100644 --- a/application/ADBStrasse/ADBStrasseModel.php +++ b/application/ADBStrasse/ADBStrasseModel.php @@ -170,7 +170,7 @@ class ADBStrasseModel { if(array_key_exists("name%", $filter)) { $name = FronkDB::singleton()->escape($filter['name%']); if($name) { - $where .= " AND Strasse.`name` like '%$name%'"; + $where .= " AND Strasse.`name` like '$name%'"; } } @@ -184,7 +184,7 @@ class ADBStrasseModel { if(array_key_exists("gemeinde%", $filter)) { $gemeinde = FronkDB::singleton()->escape($filter['gemeinde%']); if($gemeinde) { - $where .= " AND Gemeinde.`name` like '%$gemeinde%'"; + $where .= " AND Gemeinde.`name` like '$gemeinde%'"; } } @@ -198,7 +198,7 @@ class ADBStrasseModel { if(array_key_exists("plz%", $filter)) { $plz = FronkDB::singleton()->escape($filter['plz%']); if($plz) { - $where .= " AND Plz.`plzstring` like '%$plz%'"; + $where .= " AND Plz.`plzstring` like '$plz%'"; } } diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php index 40422cacd..90344c9b3 100644 --- a/application/Preordercampaign/PreordercampaignController.php +++ b/application/Preordercampaign/PreordercampaignController.php @@ -260,6 +260,7 @@ class PreordercampaignController extends mfBaseController { $this->redirect("Preordercampaign"); } + $this->layout()->set("campaign", $campaign); $preorders = PreorderModel::search(["preordercampaign_id" => $id, "add-where" => "AND JSON_LENGTH(addon_services) > 1"]); $csv = []; @@ -271,12 +272,38 @@ class PreordercampaignController extends mfBaseController { // address data and stuff $general = [ - + "ucode" => $preorder->ucode, + "gemeinde" => $preorder->adb_hausnummer->ortschaft->gemeinde->name, + "plz" => $preorder->adb_hausnummer->plz->plzstring, + "ortschaft" => $preorder->adb_hausnummer->ortschaft->name, + "strasse" => $preorder->adb_hausnummer->strasse->name, + "address_info" => $preorder->address_info, + "contact_firma" => $preorder->company, + "contact_uid" => $preorder->uid, + "contact_firstname" => $preorder->firstname, + "contact_lastname" => $preorder->lastname, + "contact_street" => $preorder->street, + "contact_plz" => $preorder->zip, + "contact_ort" => $preorder->city, + "phone" => $preorder->phone, + "email" => $preorder->email, ]; foreach($sjson as $service) { - $services[] = $service->service; + if(!$service->ordered) continue; + + $s = $general; + $s["service"] = $service->service; + $data = []; + foreach($service->data as $d) { + $data[] = (string)$d->name.": ".(is_bool($d->value) ? (int)$d->value : (string)$d->value); + } + $s["service_data"] = implode("; ", $data); + $csv[] = $s; } + //var_dump($csv);exit; + $this->layout()->setTemplate("Preordercampaign/services.csv"); + $this->layout()->set("csv", $csv); } }