191 lines
5.5 KiB
PHP
191 lines
5.5 KiB
PHP
<?php
|
|
|
|
class PipeworkController 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", "netowner", "pipeplanner", "pipeworker"])) {
|
|
$this->redirect("Dashboard");
|
|
}
|
|
}
|
|
|
|
protected function indexAction() {
|
|
$this->layout()->setTemplate("Pipework/Index");
|
|
|
|
// get allowed networks
|
|
if($this->me->is("Admin")) {
|
|
$my_networks = NetworkModel::getAll();
|
|
} else {
|
|
$my_networks = $this->me->my_networks;
|
|
}
|
|
|
|
// get Buildings in networks
|
|
$networks = [];
|
|
foreach($my_networks as $network) {
|
|
if(!array_key_exists($network->name, $networks)) {
|
|
$networks[$network->name] = [];
|
|
}
|
|
|
|
$building_search = [
|
|
"network_id" => $network->id,
|
|
"workflow_finished" => 0
|
|
];
|
|
|
|
foreach(BuildingModel::search($building_search) as $b) {
|
|
if(!array_key_exists($b->id, $networks[$network->name])) {
|
|
$networks[$network->name][$b->id] = $b;
|
|
}
|
|
}
|
|
}
|
|
|
|
$building = reset(reset($networks));
|
|
$item_colspan = 0;
|
|
$i = 0;
|
|
|
|
// get fields between delimiters for colspan
|
|
foreach($building->workflowitems as $wfitem) {
|
|
if($i == 0 && $wfitem->type == "delimiter") continue;
|
|
|
|
if($wfitem->type == "delimiter") {
|
|
$item_colspan = $i;
|
|
break;
|
|
}
|
|
|
|
$i++;
|
|
}
|
|
//var_dump($item_colspan);exit;
|
|
$this->layout()->set("building_wf_colspan", $item_colspan);
|
|
$this->layout()->set("networks", $networks);
|
|
//var_dump(reset(reset($networks))->workflowitems);exit;
|
|
|
|
|
|
}
|
|
|
|
|
|
protected function saveAction() {
|
|
$r = $this->request;
|
|
//var_dump($r->get());exit;
|
|
$building_id = $r->id;
|
|
if(!is_numeric($building_id) || $building_id < 1) {
|
|
$this->layout()->setFlash("Objekt nicht gefunden", "error");
|
|
$this->redirect("Pipework");
|
|
}
|
|
|
|
$building = new Building($building_id);
|
|
if(!$building->id) {
|
|
$this->layout()->setFlash("Objekt nicht gefunden", "error");
|
|
$this->redirect("Pipework");
|
|
}
|
|
|
|
//var_dump($r->get());exit;
|
|
|
|
if($this->me->is(["Admin", "netowner", "pipeplanner"])) {
|
|
if($r->pipework_enabled == 1) {
|
|
$building->pipework_enabled = 1;
|
|
} else {
|
|
$building->pipework_enabled = 0;
|
|
}
|
|
$building->save();
|
|
}
|
|
|
|
if($building->workflow_comment != $r->workflow_comment) {
|
|
$building->workflow_comment = $r->workflow_comment;
|
|
$building->workflow_comment_changed = date('U');
|
|
$building->workflow_comment_changed_by = $this->me->id;
|
|
$building->save();
|
|
}
|
|
|
|
$items = [];
|
|
|
|
// get workflow values from request
|
|
foreach($r->get() as $field_name => $value) {
|
|
$m = [];
|
|
if(preg_match('/^wfitem_(.+)$/', $field_name, $m)) {
|
|
if(!$m[1]) {
|
|
continue;
|
|
}
|
|
$items[$m[1]] = $value;
|
|
}
|
|
}
|
|
|
|
//var_dump($items);exit;
|
|
|
|
foreach($items as $name => $value) {
|
|
$item = WorkflowitemModel::getFirst(["name" => $name, "object_type" => "building"]);
|
|
if(!$item) {
|
|
var_dump("no item: $name");exit;
|
|
}
|
|
$item->setObjectId($building_id);
|
|
$item->value->setValue($value, $items);
|
|
//var_dump($item);exit;
|
|
$item->value->save();
|
|
|
|
// set pipework finished flag in building
|
|
if($name == TT_WORKFLOW_ITEM_PIPEWORK_DONE) {
|
|
if($value && $building->workflow_finished == 0) {
|
|
$building->workflow_finished = 1;
|
|
$building->save();
|
|
} elseif(!$value && $building->workflow_finished == 1) {
|
|
$building->workflow_finished = 0;
|
|
$building->save();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// file upload
|
|
|
|
if(array_key_exists("PipeworkFileUpload", $_FILES) && !$_FILES['PipeworkFileUpload']['error']) {
|
|
//var_dump($_FILES);exit;
|
|
try {
|
|
$upload = new mfUpload("PipeworkFileUpload");
|
|
$upload->setSavepath(MFUPLOAD_FILE_SAVE_PATH."/documents");
|
|
$upload->save();
|
|
|
|
$file_data = [];
|
|
$file_data['name'] = ($r->file_name) ? $r->file_name : $upload->getOriginalFilename();
|
|
$file_data['filename'] = ($r->file_filename) ? $r->file_filename : $upload->getOriginalFilename();
|
|
$file_data['store_filename'] = $upload->getFilename();
|
|
$file_data['orig_filename'] = $upload->getOriginalFilename();
|
|
|
|
$file = FileModel::create($file_data);
|
|
$file_id = $file->save();
|
|
if(!$file_id) {
|
|
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
|
unlink($upload->getSavepath()."/".$upload->getFilename());
|
|
} else {
|
|
$bf = [];
|
|
$bf['building_id'] = $building_id;
|
|
$bf['file_id'] = $file_id;
|
|
$bf['type'] = $r->file_type;
|
|
$bf['name'] = $file->name;
|
|
|
|
$buildingfile = BuildingFileModel::create($bf);
|
|
if(!$buildingfile->save()) {
|
|
$file->delete();
|
|
unlink($upload->getSavepath()."/".$upload->getFilename());
|
|
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
|
}
|
|
}
|
|
} catch(Exception $ex) {
|
|
$this->layout->setFlash("Fehler beim Dateiupload: ".$ex->getMessage(), "warn");
|
|
$this->redirect("Pipework");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
$this->layout->setFlash("Workflow Eintrag erfolgreich gespeichert.", "success");
|
|
$this->redirect("Pipework");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
} |