238 lines
7.0 KiB
PHP
238 lines
7.0 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());
|
|
|
|
$this->layout()->set("adb_netzgebiete", ADBNetzgebietModel::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;
|
|
$data['homes_total'] = (int)$r->homes_total;
|
|
|
|
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";
|
|
} elseif($r->product_type == "no_setup") {
|
|
$data['product_type'] = "no_setup";
|
|
} 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);
|
|
}
|
|
|
|
//var_dump($r->adb_netzgebiet_ids);exit;
|
|
foreach(PreordercampaignSalesclusterModel::search(['preordercampaign_id' => $campaign->id]) as $pcg) {
|
|
$pcg->delete();
|
|
}
|
|
//var_dump($r->adb_netzgebiet_ids);exit;
|
|
if(is_array($r->adb_netzgebiet_ids) && count($r->adb_netzgebiet_ids)) {
|
|
foreach($r->adb_netzgebiet_ids as $netzgebiet_id) {
|
|
$pcg = PreordercampaignSalesclusterModel::getFirst(['preordercampaign_id' => $campaign->id, 'salescluster_id' => $netzgebiet_id]);
|
|
if($pcg) continue;
|
|
|
|
$pcg = PreordercampaignSalesclusterModel::create(['preordercampaign_id' => $campaign->id, 'salescluster_id' => $netzgebiet_id]);
|
|
$pcg->save();
|
|
}
|
|
}
|
|
|
|
foreach(PreordercampaignApiuserModel::search(['preordercampaign_id' => $campaign->id]) as $pca) {
|
|
$pca->delete();
|
|
}
|
|
if(is_array($r->apiusers) && count($r->apiusers)) {
|
|
foreach($r->apiusers as $user_id) {
|
|
$pca = PreordercampaignApiuserModel::getFirst(['preordercampaign_id' => $campaign->id, 'worker_id' => $user_id]);
|
|
if($pca) continue;
|
|
|
|
$pca = PreordercampaignApiuserModel::create(['preordercampaign_id' => $campaign->id, 'worker_id' => $user_id]);
|
|
$pca->save();
|
|
}
|
|
}
|
|
|
|
foreach(PreordercampaignOriginhostnameModel::search(['preordercampaign_id' => $campaign->id]) as $origin) {
|
|
$origin->delete();
|
|
}
|
|
// var_dump($r->corsorigins);exit;
|
|
if($r->corsorigins) {
|
|
$origins = str_replace("\r", "\n", $r->corsorigins);
|
|
$origins = preg_replace("/\n+/", "\n", $origins);
|
|
$origins = explode("\n", $origins);
|
|
if(is_array($origins) && count($origins)) {
|
|
foreach($origins as $origin) {
|
|
$poh = PreordercampaignOriginhostnameModel::getFirst(['preordercampaign_id' => $campaign->id, 'hostname' => $origin]);
|
|
if($poh) continue;
|
|
|
|
$poh = PreordercampaignOriginhostnameModel::create(['preordercampaign_id' => $campaign->id, 'hostname' => $origin]);
|
|
$poh->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->layout()->setFlash("Vorbestellkampagne erfolgreich gespeichert.", "success");
|
|
//$this->redirect("Preordercampaign", "Edit", ['id' => $new_id]);
|
|
$this->redirect("Preordercampaign");
|
|
|
|
}
|
|
|
|
} |