needlogin=true; $me = new User(); $me->loadMe(); $this->me = $me; $this->layout()->set("me",$me); if(!$me->is(["Preorderlogistics"])) { $this->redirect("Dashboard"); } } protected function indexAction() { $this->layout()->setTemplate("Preorderlogistics/Index"); $this->layout->set("filter", $this->request->filter); $filter = []; if($this->request->filter) { $filter = $this->getPreparedFilter($this->request->filter); } else { $filter = $this->getPreparedFilter([]); } // pagination defaults $pagination = []; $pagination['start'] = 0; $pagination['count'] = 25; $pagination['maxItems'] = 0; if(is_numeric($this->request->s)) { $pagination['start'] = intval($this->request->s); } $my_networks = []; $my_network_ids = []; $my_campaign_ids = []; $user_network_ids = $this->me->getFlag("preorder_networks")->value(); if($user_network_ids) { $user_network_ids = json_decode($user_network_ids); } if(is_array($user_network_ids) && count($user_network_ids)) { foreach($user_network_ids as $mnid) { $my_networks[] = new Network($mnid); } } foreach($my_networks as $network) { $my_network_ids[] = $network->id; } foreach($my_networks as $network) { foreach(PreordercampaignModel::search(['network_id' => $network->id]) as $campaign) { $my_campaigns[] = $campaign; if(!in_array($campaign->id, $my_campaign_ids)) $my_campaign_ids[] = $campaign->id; } } //var_dump($my_network_ids,$my_campaign_ids);exit; $this->layout()->set("my_campaigns", $my_campaigns); if(array_key_exists("preordercampaign_id", $filter) && $filter['preordercampaign_id'] && in_array($filter['preordercampaign_id'], $my_campaign_ids)) { $campaign_id = $filter['preordercampaign_id']; if(is_numeric($campaign_id) && $campaign_id > 0) { $campaign = new Preordercampaign($campaign_id); $this->layout()->set("campaign", $campaign); } } else { $filter['preordercampaign_id'] = $my_campaign_ids; } $filter['network_id'] = $my_network_ids; $filter[">status_code"] = 139; $filter["layout()->set("pagination", $pagination); $this->layout()->set("preorders", $preorders); } private function getPreparedFilter($filter) { $new_filter = []; $new_filter['add-where'] = ""; if(array_key_exists("name", $filter) && $filter['name']) { $new_filter['name%'] = "%".$filter['name']; unset($filter['name']); } if(array_key_exists("area", $filter) && $filter['area']) { $new_filter['area%'] = "%".$filter['area']; unset($filter['area']); } if(array_key_exists("search",$filter) && trim($filter['search'])) { $search = trim($filter['search']); $new_filter['add-where'] .= " AND ("; $new_filter['add-where'] .= " adb_hausnummer.gemeinde like '%$search%' OR adb_hausnummer.plz like '%$search%' OR adb_hausnummer.strasse like '%$search%'"; $new_filter['add-where'] .= " OR company like '%$search%' OR firstname like '%$search%' OR lastname like '%$search%' OR concat(firstname, ' ', lastname) like '%$search%' OR concat(lastname, ' ', firstname) like '%$search%' OR street like '%$search%' OR zip like '%$search%' OR city like '%$search%' OR email like '%$search' OR phone like '%$search'"; $new_filter['add-where'] .= " OR ucode like '%$search' OR oaid like '%$search'"; } if(array_key_exists("address", $filter) && $filter["address"]) { $address = $this->db()->escape($filter['address']); $new_filter['add-where'] .= " AND (adb_hausnummer.gemeinde like '%$address%' OR adb_hausnummer.plz like '%$address%' OR adb_hausnummer.strasse like '%$address%' OR adb_hausnummer.hausnummer like '%$address%' OR CONCAT (adb_hausnummer.strasse, ' ', adb_hausnummer.hausnummer) like '%$address%' OR CONCAT (adb_hausnummer.strasse, ' ', adb_hausnummer.hausnummer) like '%".str_replace(" ", "%", $address)."%')"; } if(array_key_exists("hausnummer", $filter) && $filter["hausnummer"]) { $hausnummer = $this->db()->escape($filter['hausnummer']); $new_filter['hausnummer'] = $hausnummer; } if(array_key_exists("kunde", $filter) && $filter["kunde"]) { $kunde = $this->db()->escape($filter['kunde']); $new_filter['add-where'] .= " AND (company like '%$kunde%' OR firstname like '%$kunde%' OR lastname like '%$kunde%' OR concat(firstname, ' ', lastname) like '%$kunde%' OR concat(lastname, ' ', firstname) like '%$kunde%' OR street like '%$kunde%' OR zip like '%$kunde%' OR city like '%$kunde%' OR phone like '%$kunde%' OR email like '%$kunde%')"; } if(array_key_exists("ucode", $filter) && $filter['ucode']) { $new_filter['ucode'] = "%".$filter['ucode']."%"; unset($filter['ucode']); } if(array_key_exists("oaid", $filter) && $filter['oaid']) { $new_filter['oaid'] = "%".$filter['oaid']."%"; unset($filter['oaid']); } $new_filter["sent"] = false; if(array_key_exists("sent", $filter)) { if($filter['sent'] == "yes") { $new_filter["sent"] = true; } if($filter['sent'] == "no") { $new_filter["sent"] = false; } if($filter['sent'] == "all") { unset($new_filter["sent"]); } unset($filter['sent']); } $new_filter['deleted'] = 0; foreach($filter as $name => $value) { $new_filter[$name] = $value; } return $new_filter; } protected function printAction() { $this->layout()->setTemplate("Preorderlogistics/Print.template"); $id = $this->request->id; if(!is_numeric($id) || $id < 1) { $this->layout()->setFlash("Vorbestellung nicht gefunden", "error"); $this->redirect("Preorderlogistics"); } $preorder = new Preorder($id); if(!$preorder->id) { $this->layout()->setFlash("Vorbestellung nicht gefunden", "error"); $this->redirect("Preorderlogistics"); } $user_network_ids_json = $this->me->getFlag("preorder_networks")->value(); $user_network_ids = json_decode($user_network_ids_json); if(!is_array($user_network_ids) || !count($user_network_ids)) { $this->layout()->setFlash("Vorbestellung nicht gefunden (3)", "error"); $this->redirect("Preorderlogistics"); } //var_dump($preorder->adb_hausnummer->netzgebiet_id, $user_network_ids);exit; $network = NetworkModel::getFirst(["adb_network_id" => $preorder->adb_hausnummer->netzgebiet_id]); if(!$network) { $this->layout()->setFlash("Vorbestellung nicht gefunden (4)", "error"); $this->redirect("Preorderlogistics"); } if(!in_array($network->id, $user_network_ids)) { $this->layout()->setFlash("Vorbestellung nicht gefunden (2)", "error"); $this->redirect("Preorderlogistics"); } /* * generate QR code */ if(!$preorder->ciftoken) { $preorder->createCiftoken(); $preorder->cifurl = "https://pro.ichwillglasfaser.at/ClientSubmit/finishedInstallationWork?c=".$preorder->ciftoken; $preorder->save(); } if(!$preorder->cifcableurl) { $preorder->cifcableurl = "https://www.deineglasfaser.at/kundinnen/leerrohr-nachbestellung/"; $preorder->save(); } $plog = PreorderlogisticsModel::getFirst(["preorder_id" => $preorder->id]); if(!$plog) { $plog = PreorderlogisticsModel::create([ "preorder_id" => $preorder->id, "sent" => 0 ]); if(!$plog->save()) { $this->layout()->setFlash("Eintrag konnte nicht gespeichert werden"); } } $qrimg = $plog->getCifQrPng($preorder->cifurl); $this->layout()->set("qr_url", $qrimg); $this->layout()->set("preorder", $preorder); } protected function apiAction() { if(!$this->me->is(["Preorderlogistics"])) { $this->redirect("Dashboard"); } $do = $this->request->do; $data = []; switch($do) { case "saveSent": $return = $this->saveSentApi(); break; default: $return = false; } if(!is_array($return) || !count($return)) { $data = ["status" => "error"]; $this->returnJson($data); } $data['status'] = "OK"; $data['result'] = $return; $this->returnJson($data); } private function saveSentApi() { if(!$this->me->is(["Preorderlogistics"])) { return false; } $preorder_id = $this->request->id; if(!is_numeric($preorder_id) || $preorder_id < 1) { return false; } $preorder = new Preorder($preorder_id); if(!$preorder->id) return false; $plog = PreorderlogisticsModel::getFirst(["preorder_id" => $preorder->id]); if(!$plog) { $plog = PreorderlogisticsModel::create([ "preorder_id" => $preorder->id, "sent" => 0 ]); } $sent = intval($this->request->sent); if($sent < 0 || $sent > 1) return false; if($sent) { $plog->sent_by = $this->me->id; $plog->sent = date('U'); $new_status = PreorderstatusModel::getFirst(["code" => 145]); if($preorder->status->code < $new_status->code) { $plog->prev_status_code = $preorder->status->code; $preorder->status_id = $new_status->id; $preorder->save(); } } else { $plog->sent_by = null; $plog->sent = 0; } if(!$plog->save()) { return false; } return ["preorder_id" => $preorder->id]; } }