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->to)?></td>
<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", "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>

View File

@@ -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;
}
}

View File

@@ -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%'";
}
}

View File

@@ -1,6 +1,7 @@
<?php
class ADBHausnummer extends mfBaseModel {
private $ortschaft;
private $strasse;
private $plz;
private $freigaben = [];
@@ -44,6 +45,11 @@ class ADBHausnummer extends mfBaseModel {
return $this->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;

View File

@@ -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;
}

View File

@@ -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%'";
}
}

View File

@@ -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%'";
}
}

View File

@@ -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%'";
}
}

View File

@@ -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);
}
}