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_gemeinden", ADBGemeindeModel::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"; } 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_gemeinde_ids);exit; foreach(PreordercampaignGemeindeModel::search(['preordercampaign_id' => $campaign->id]) as $pcg) { $pcg->delete(); } if(is_array($r->adb_gemeinde_ids) && count($r->adb_gemeinde_ids)) { foreach($r->adb_gemeinde_ids as $gemeinde_id) { $pcg = PreordercampaignGemeindeModel::getFirst(['preordercampaign_id' => $campaign->id, 'gemeinde_id' => $gemeinde_id]); if($pcg) continue; $pcg = PreordercampaignGemeindeModel::create(['preordercampaign_id' => $campaign->id, 'gemeinde_id' => $gemeinde_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(); } } $this->layout()->setFlash("Vorbestellkampagne erfolgreich gespeichert.", "success"); //$this->redirect("Preordercampaign", "Edit", ['id' => $new_id]); $this->redirect("Preordercampaign"); } }