diff --git a/Controller.php b/Controller.php index 7c077b7..ea674e4 100644 --- a/Controller.php +++ b/Controller.php @@ -223,6 +223,21 @@ class Controller extends ModuleAbstract implements WebInterface $response->set($request->__toString(), $task->jsonSerialize()); } + private function validateTaskElementCreate(RequestAbstract $request) : array + { + $val = []; + if ( + ($val['status'] = !TaskStatus::isValidValue((int) $request->getData('status'))) + || ($val['due'] = !((bool)strtotime($request->getData('due')))) + || ($val['task'] = !(is_numeric($request->getData('task')))) + || ($val['forward'] = !(is_numeric(empty($request->getData('forward')) ? $request->getAccount() : $request->getData('forward')))) + ) { // todo: validate correct task + return $val; + } + + return []; + } + /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -235,6 +250,12 @@ class Controller extends ModuleAbstract implements WebInterface */ public function apiTaskElementCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { + if (!empty($val = $this->validateTaskElementCreate($request))) { + $response->set('task_element_create', new FormValidation($val)); + + return; + } + $element = new TaskElement(); $element->setForwarded($request->getData('forward') ?? $request->getAccount()); $element->setCreatedAt(new \DateTime('now')); @@ -242,10 +263,10 @@ class Controller extends ModuleAbstract implements WebInterface $element->setDue(new \DateTime($request->getData('due') ?? 'now')); $element->setStatus($request->getData('status')); $element->setTask($request->getData('task')); - $element->setDescription($request->getData('desc')); + $element->setDescription($request->getData('description')); TaskElementMapper::create($element); - $response->set($request->__toString(), new Reload()); + $response->set($request->__toString(), $element->jsonSerialize()); } } diff --git a/Models/Task.php b/Models/Task.php index e87e128..1d81398 100644 --- a/Models/Task.php +++ b/Models/Task.php @@ -420,10 +420,13 @@ class Task implements \JsonSerializable { return [ 'id' => $this->id, + 'createdBy' => $this->createdBy, + 'createdAt' => $this->createdAt, 'title' => $this->title, 'description' => $this->description, 'status' => $this->status, 'type' => $this->type, + 'type' => $this->type, 'due' => $this->due->format('Y-m-d H:i:s'), 'done' => (!isset($this->done) ? null : $this->done->format('Y-m-d H:i:s')), ]; diff --git a/Models/TaskElement.php b/Models/TaskElement.php index f4dccba..c98becb 100644 --- a/Models/TaskElement.php +++ b/Models/TaskElement.php @@ -27,7 +27,7 @@ use phpOMS\Datatypes\Exception\InvalidEnumValue; * @link http://orange-management.com * @since 1.0.0 */ -class TaskElement +class TaskElement implements \JsonSerializable { /** @@ -296,4 +296,21 @@ class TaskElement { $this->task = $task; } + + public function toArray() : array { + return [ + 'id' => $this->id, + 'task' => $this->task, + 'createdBy' => $this->createdBy, + 'createdAt' => $this->createdAt, + 'description' => $this->description, + 'status' => $this->status, + 'forward' => $this->forwarded, + 'due' => isset($this->due) ? $this->due->format('Y-m-d H:i:s') : null, + ]; + } + + public function jsonSerialize() { + return json_encode($this->toArray()); + } } diff --git a/Theme/Backend/task-single.tpl.php b/Theme/Backend/task-single.tpl.php index 99ffeaf..dcfc05b 100644 --- a/Theme/Backend/task-single.tpl.php +++ b/Theme/Backend/task-single.tpl.php @@ -74,15 +74,19 @@ foreach ($elements as $key => $element) : $c++;
-
+
-
+
-
+
diff --git a/Theme/backend/task-single.tpl.php b/Theme/backend/task-single.tpl.php index 99ffeaf..dcfc05b 100644 --- a/Theme/backend/task-single.tpl.php +++ b/Theme/backend/task-single.tpl.php @@ -74,15 +74,19 @@ foreach ($elements as $key => $element) : $c++;
-
+
-
+
-
+