Files
thetool/application/Cpeshipping/CpeshippingController.php

211 lines
5.9 KiB
PHP

<?php
class CpeshippingController 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"])) {
$this->redirect("Dashboard");
}
}
protected function indexAction() {
$this->layout()->setTemplate("Cpeshipping/Index");
// pagination defaults
$pagination = [];
$pagination['start'] = 0;
$pagination['count'] = 25;
$pagination['maxItems'] = 0;
if(is_numeric($this->request->s)) {
$pagination['start'] = intval($this->request->s);
}
$provisions_search = ["shipping" => 1, "shipped" => 0];
$pagination['maxItems'] = CpeprovisioningModel::count($provisions_search);
$provisions = CpeprovisioningModel::search($provisions_search, $pagination);
//$o = $provisions[0]->orderproduct->product->attributes;
//var_dump($o);exit;
$this->layout()->set("cpeprovisionings", $provisions);
$this->layout()->set("pagination", $pagination);
}
protected function historyAction() {
$this->layout()->setTemplate("Cpeshipping/History");
// pagination defaults
$pagination = [];
$pagination['start'] = 0;
$pagination['count'] = 25;
$pagination['maxItems'] = 0;
if(is_numeric($this->request->s)) {
$pagination['start'] = intval($this->request->s);
}
$ship_search = ["SqlOptions" => ["orderBy" => "id DESC"]];
$pagination['maxItems'] = CpeshippingFileModel::count($ship_search);
$shippings = CpeshippingFileModel::search($ship_search, $pagination);
$this->layout()->set("shippings", $shippings);
$this->layout()->set("pagination", $pagination);
}
protected function saveAction() {
$r = $this->request;
if($r->type == "ship") {
return $this->shipAction();
}
//var_dump($r);exit;
if(is_array($r->external_finish) && count($r->external_finish)) {
$ext_finish = $r->external_finish;
}
if(is_array($r->prov) && count($r->prov)) {
$provs = $r->prov;
}
if(!count($provs)) {
$this->layout()->setFlash("Nichts zu speichern", "warning");
$this->redirect("Cpeshipping");
}
$shippings = [];
foreach($provs as $prov_id) {
if(!is_numeric($prov_id) || $prov_id <= 0) {
continue;
}
$prov = new Cpeprovisioning($prov_id);
if(!$prov->id) {
continue;
}
if(!$prov->shipping) {
// is not supposed to be selectable in UI
continue;
}
if(array_key_exists($prov_id, $ext_finish) && $ext_finish[$prov_id] == 1) {
$prov->external_finished = date('U');
$prov->external_finished_by = $this->me->id;
} else {
$prov->external_finished = null;
$prov->external_finished_by = $this->me->id;
}
$prov->save();
}
$this->layout()->setFlash("Erfolgreich gespeichert.", "success");
$this->redirect("Cpeshipping");
}
protected function shipAction() {
$r = $this->request;
//var_dump($r);exit;
$ships = [];
if(is_array($r->ships) && count($r->ships)) {
$ships = $r->ships;
}
$ext_finish = [];
if(is_array($r->external_finish) && count($r->external_finish)) {
$ext_finish = $r->external_finish;
}
if(!count($ships)) {
$this->layout()->setFlash("Keine CPEs ausgewählt", "warning");
$this->redirect("Cpeshipping");
}
$shippings = [];
foreach($ships as $prov_id) {
if(!is_numeric($prov_id) || $prov_id <= 0) {
continue;
}
$prov = new Cpeprovisioning($prov_id);
if(!$prov->id) {
continue;
}
if(!$prov->shipping) {
// is not supposed to be selectable in UI
continue;
}
if(array_key_exists($prov_id, $ext_finish) && $ext_finish[$prov_id] == 1) {
$prov->external_finished = date('U');
$prov->external_finished_by = $this->me->id;
} else {
$prov->external_finished = null;
$prov->external_finished_by = $this->me->id;
}
$prov->save();
$shippings[] = $prov;
}
$tpl = new Layout();
$tpl->setTemplate("Cpeshipping/csv/dhl.csv");
$tpl->set("shippings", $shippings);
$tpl->set("me", $this->me);
$body = $tpl->render();
/*
header("Content-type: text/csv");
header("Content-disposition: attachment; filename=\"dhl-shipment-".date("Y-m-d-H-i-s").".csv\"");
echo $body;exit;
*/
$folder = MFUPLOAD_FILE_SAVE_PATH."/csv";
$filename = "dhl-shipment-".date("Y-m-d-H-i-s").".csv";
$path = "$folder/$filename";
if(!file_put_contents($path, $body)) {
$this->layout()->setFlash("Fehler beim Erstellen der CSV-Datei", "error");
$this->redirect("Cpeshipping");
}
$file = new File();
$file->name = "DHL Shipment CSV ".date("d.m.Y H:i:s");
$file->filename = $filename;
$file->store_filename = $filename;
$file->subfolder = "csv";
$file->create_by = $this->me->id;
$file->edit_by = $this->me->id;
$file_id = $file->save();
if(!$file_id) {
$this->layout()->setFlash("Fehler beim Speichern der CSV-Datei (File)", "error");
$this->redirect("Cpeshipping");
}
$shippingfile = CpeshippingFileModel::create(['file_id' => $file_id]);
$shippingfile_id = $shippingfile->save();
if(!$shippingfile_id) {
$this->layout()->setFlash("Fehler beim Speichern der CSV-Datei (ShippingFile)", "error");
$this->redirect("Cpeshipping");
}
foreach($shippings as $prov) {
$prov->shipped = 1;
$prov->shipping_date = date('U');
$prov->shipped_by = $this->me->id;
$prov->cpeshippingfile_id = $shippingfile_id;
$prov->save();
}
$this->layout()->setFlash("Versand-CSV erfolgreich erstellt.", "success");
$this->redirect("Cpeshipping", "History", null, "download=".$file_id);
}
}