Files
thetool/application/Preordercampaign/PreordercampaignController.php
2022-05-11 17:35:21 +02:00

185 lines
4.8 KiB
PHP

<?php
class PreordercampaignController extends mfBaseController {
protected function init() {
$this->needlogin=true;
$me = new User();
$me->loadMe();
$this->me = $me;
$this->layout()->set("me",$me);
if(!$me->is(["Admin", "salespartner"])) {
$this->redirect("Dashboard");
}
}
protected function indexAction() {
$this->layout()->setTemplate("Preordercampaign/Index");
$this->layout->set("filter", $this->request->filter);
if($this->request->filter) {
$filter = $this->getPreparedFilter($this->request->filter);
}
// pagination defaults
$pagination = [];
$pagination['start'] = 0;
$pagination['count'] = 20;
$pagination['maxItems'] = 0;
if(is_numeric($this->request->s)) {
$pagination['start'] = intval($this->request->s);
}
$my_networks = [];
if($this->me->is("Admin")) {
if($filter['network_id']) {
$my_networks[] = new Network($filter['network_id']);
} else {
$my_networks = NetworkModel::getAll();
}
$this->layout()->set("mynetworks", NetworkModel::getAll());
} else {
$use_filter_network = false;
$my_networks = $this->me->my_networks;
foreach($my_networks as $mn) {
if($mn->id == $filter['network_id']) {
$use_filter_network = true;
continue;
}
}
if($use_filter_network) {
$my_networks = [];
$my_networks[] = new Network($filter['network_id']);
}
$this->layout()->set("mynetworks", $this->me->my_networks);
}
unset($filter['network_id']);
$campaigns = PreordercampaignModel::search(['network_id' => $my_networks]);
$this->layout()->set("campaigns", $campaigns);
}
private function getPreparedFilter($filter) {
$new_filter = [];
foreach($filter as $name => $value) {
$new_filter[$name] = $value;
}
return $new_filter;
}
protected function addAction() {
$this->layout()->setTemplate("Preordercampaign/Form");
if($this->me->isAdmin()) {
$this->layout()->set("networks", NetworkModel::getAll());
} else {
$this->layout()->set("networks", $this->me->my_networks);
}
$this->layout()->set("types", BuildingtypeModel::getAll());
$this->layout()->set("statuses", BuildingstatusModel::getAll());
$this->layout()->set("networksections", NetworksectionModel::getAll());
}
protected function editAction() {
$id = $this->request->id;
if(!is_numeric($id) || !$id) {
$this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
$this->redirect("Preordercampaign");
}
$campaign = new Preordercampaign($id);
if(!$campaign->id) {
$this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
$this->redirect("Preordercampaign");
}
$this->layout()->set("campaign", $campaign);
return $this->addAction();
}
protected function saveAction() {
$r = $this->request;
//var_dump($r);exit;
$id = $r->id;
if(is_numeric($id) && $id > 0) {
$mode = "edit";
$campaign = new Preordercampaign($id);
if(!$campaign->id) {
$this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
$this->redirect("Preordercampaign");
}
} else {
$id = false;
$mode = "add";
}
$data = [];
$data['network_id'] = $r->network_id;
$data['name'] = $r->name;
$data['description'] = $r->description;
$data['area'] = $r->area;
$data['note'] = $r->note;
if($r->from) {
$data['from'] = self::dateToTimestamp($r->from);
}
if($r->to) {
$data['to'] = self::dateToTimestamp($r->to);
}
if($r->fulfillment == "thirdparty") {
$data['fulfillment'] = "thirdparty";
} else {
$data['fulfillment'] = "thetool";
}
if($r->product_type == "setup_only") {
$data['product_type'] = "setup_only";
} else {
$data['product_type'] = "all";
}
$data['edit_by'] = $this->me->id;
if($mode == "add") {
$data['create_by'] = $this->me->id;
$campaign = PreordercampaignModel::create($data);
} else {
$campaign->update($data);
}
$new_id = $campaign->save();
if(!$new_id) {
$this->layout()->setFlash("Fehler beim Speichern", "error");
$this->layout()->set("campaign", $campaign);
return $this->add();
}
if(is_array($r->types) && count($r->types)) {
$campaign->addTypes($r->types);
}
$this->layout()->setFlash("Vorbestellkampagne erfolgreich gespeichert.", "success");
//$this->redirect("Preordercampaign", "Edit", ['id' => $new_id]);
$this->redirect("Preordercampaign");
}
}