Added ordered addon services download in preordercampaign

This commit is contained in:
Frank Schubert
2022-11-11 13:59:53 +01:00
parent a0f0d3037b
commit fe93815b1a
9 changed files with 99 additions and 19 deletions

View File

@@ -109,6 +109,7 @@
<td><?=date('d.m.Y',$camp->from)?></td> <td><?=date('d.m.Y',$camp->from)?></td>
<td><?=date('d.m.Y',$camp->to)?></td> <td><?=date('d.m.Y',$camp->to)?></td>
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;"> <td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<a href="<?=self::getUrl("Preordercampaign", "downloadAddonServices", ["preordercampaign_id" => $camp->id])?>" title="Bestellte Zusatzdienste exportieren"><i class="far fa-sunset"></i></a>
<a href="<?=self::getUrl("Preordercampaign", "edit", ["id" => $camp->id])?>"><i class="far fa-edit" title="Vorbestellkampagne Bearbeiten"></i></a> <a href="<?=self::getUrl("Preordercampaign", "edit", ["id" => $camp->id])?>"><i class="far fa-edit" title="Vorbestellkampagne Bearbeiten"></i></a>
<a href="<?=self::getUrl("Preordercampaign", "delete", ["id" => $camp->id])?>" class="text-danger" onclick="if(!confirm('Vorbestellkampagne wirklich löschen?')) return false;" title="Vorbestellkampagne Löschen"><i class="fas fa-trash"></i></a> <a href="<?=self::getUrl("Preordercampaign", "delete", ["id" => $camp->id])?>" class="text-danger" onclick="if(!confirm('Vorbestellkampagne wirklich löschen?')) return false;" title="Vorbestellkampagne Löschen"><i class="fas fa-trash"></i></a>
</td> </td>

View File

@@ -2,7 +2,7 @@
class ADBGemeinde extends mfBaseModel { class ADBGemeinde extends mfBaseModel {
public $plzs = []; public $plzs = [];
private $ortschaften = [];
protected function init() { protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); $this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -66,4 +66,35 @@ class ADBGemeinde extends mfBaseModel {
} }
return $list; 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;
}
} }

View File

@@ -94,6 +94,7 @@ class ADBGemeindeModel {
LEFT JOIN Plz ON (Plz.gemeinde_id = Gemeinde.id) LEFT JOIN Plz ON (Plz.gemeinde_id = Gemeinde.id)
LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Gemeinde.id) LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Gemeinde.id)
LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id) LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id)
LEFT JOIN Ortschaft ON (Ortschaft.gemeinde_id = Gemeinde.id)
WHERE $where WHERE $where
GROUP BY Gemeinde.id GROUP BY Gemeinde.id
ORDER BY name,code,kennziffer"; ORDER BY name,code,kennziffer";
@@ -157,7 +158,7 @@ class ADBGemeindeModel {
if(array_key_exists("name%", $filter)) { if(array_key_exists("name%", $filter)) {
$name = FronkDB::singleton()->escape($filter['name%']); $name = FronkDB::singleton()->escape($filter['name%']);
if($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)) { if(array_key_exists("plz%", $filter)) {
$plz = FronkDB::singleton()->escape($filter['plz%']); $plz = FronkDB::singleton()->escape($filter['plz%']);
if($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%'";
} }
} }

View File

@@ -1,6 +1,7 @@
<?php <?php
class ADBHausnummer extends mfBaseModel { class ADBHausnummer extends mfBaseModel {
private $ortschaft;
private $strasse; private $strasse;
private $plz; private $plz;
private $freigaben = []; private $freigaben = [];
@@ -44,6 +45,11 @@ class ADBHausnummer extends mfBaseModel {
return $this->freigaben; return $this->freigaben;
} }
if($name == "ortschaft") {
$this->ortschaft = new ADBOrtschaft($this->ortschaft_id);
return $this->ortschaft;
}
if($name == "strasse") { if($name == "strasse") {
$this->strasse = new ADBStrasse($this->strasse_id); $this->strasse = new ADBStrasse($this->strasse_id);
return $this->strasse; return $this->strasse;

View File

@@ -31,7 +31,7 @@ class ADBOrtschaft extends mfBaseModel {
if($this->$name == null) { if($this->$name == null) {
if($name == "gemeinde") { if($name == "gemeinde") {
$this->gemeinde = new ADBGemeinde($this->hausnummer_id); $this->gemeinde = new ADBGemeinde($this->gemeinde_id);
return $this->gemeinde; return $this->gemeinde;
} }

View File

@@ -92,8 +92,9 @@ class ADBOrtschaftModel {
$where = self::getSqlFilter($filter); $where = self::getSqlFilter($filter);
$sql = "SELECT Ortschaft.* FROM Ortschaft $sql = "SELECT Ortschaft.* FROM Ortschaft
LEFT JOIN Gemeinde ON (Ortschaft.gemeinde_id = Gemeinde.id)
WHERE $where WHERE $where
ORDER BY name,kennziffer"; ORDER BY gemeinde_id,Ortschaft.name,Ortschaft.kennziffer";
//mfLoghandler::singleton()->debug($sql); //mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) { if(is_array($limit) && count($limit)) {
@@ -149,7 +150,7 @@ class ADBOrtschaftModel {
if(array_key_exists("name%", $filter)) { if(array_key_exists("name%", $filter)) {
$name = FronkDB::singleton()->escape($filter['name%']); $name = FronkDB::singleton()->escape($filter['name%']);
if($name) { if($name) {
$where .= " AND Ortschaft.`name` like '%$name%'"; $where .= " AND Ortschaft.`name` like '$name%'";
} }
} }

View File

@@ -119,7 +119,6 @@ class ADBPlzModel {
private static function getSqlFilter($filter) { private static function getSqlFilter($filter) {
$where = "1=1 "; $where = "1=1 ";
if(array_key_exists("netzgebiet_id", $filter)) { if(array_key_exists("netzgebiet_id", $filter)) {
$netzgebiet_id = $filter['netzgebiet_id']; $netzgebiet_id = $filter['netzgebiet_id'];
if(is_numeric($netzgebiet_id)) { if(is_numeric($netzgebiet_id)) {
@@ -129,12 +128,12 @@ class ADBPlzModel {
} }
} }
if(array_key_exists("hausnummer_id", $filter)) { if(array_key_exists("gemeinde_id", $filter)) {
$hausnummer_id = $filter['hausnummer_id']; $gemeinde_id = $filter['gemeinde_id'];
if(is_numeric($hausnummer_id)) { if(is_numeric($gemeinde_id)) {
$where .= " AND Plz.hausnummer_id=$hausnummer_id"; $where .= " AND Plz.gemeinde_id=$gemeinde_id";
} elseif(is_array($hausnummer_id) && count($hausnummer_id)) { } elseif(is_array($gemeinde_id) && count($gemeinde_id)) {
$where .= " AND Plz.hausnummer_id IN (". implode(",", $hausnummer_id).")"; $where .= " AND Plz.gemeinde_id IN (". implode(",", $gemeinde_id).")";
} }
} }
@@ -157,7 +156,7 @@ class ADBPlzModel {
if(array_key_exists("plzstring%", $filter)) { if(array_key_exists("plzstring%", $filter)) {
$plzstring = FronkDB::singleton()->escape($filter['plzstring%']); $plzstring = FronkDB::singleton()->escape($filter['plzstring%']);
if($plzstring) { if($plzstring) {
$where .= " AND Plz.`plzstring` like '%$plzstring%'"; $where .= " AND Plz.`plzstring` like '$plzstring%'";
} }
} }

View File

@@ -170,7 +170,7 @@ class ADBStrasseModel {
if(array_key_exists("name%", $filter)) { if(array_key_exists("name%", $filter)) {
$name = FronkDB::singleton()->escape($filter['name%']); $name = FronkDB::singleton()->escape($filter['name%']);
if($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)) { if(array_key_exists("gemeinde%", $filter)) {
$gemeinde = FronkDB::singleton()->escape($filter['gemeinde%']); $gemeinde = FronkDB::singleton()->escape($filter['gemeinde%']);
if($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)) { if(array_key_exists("plz%", $filter)) {
$plz = FronkDB::singleton()->escape($filter['plz%']); $plz = FronkDB::singleton()->escape($filter['plz%']);
if($plz) { if($plz) {
$where .= " AND Plz.`plzstring` like '%$plz%'"; $where .= " AND Plz.`plzstring` like '$plz%'";
} }
} }

View File

@@ -260,6 +260,7 @@ class PreordercampaignController extends mfBaseController {
$this->redirect("Preordercampaign"); $this->redirect("Preordercampaign");
} }
$this->layout()->set("campaign", $campaign);
$preorders = PreorderModel::search(["preordercampaign_id" => $id, "add-where" => "AND JSON_LENGTH(addon_services) > 1"]); $preorders = PreorderModel::search(["preordercampaign_id" => $id, "add-where" => "AND JSON_LENGTH(addon_services) > 1"]);
$csv = []; $csv = [];
@@ -271,12 +272,38 @@ class PreordercampaignController extends mfBaseController {
// address data and stuff // address data and stuff
$general = [ $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) { 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);
} }
} }