Create task elements

This commit is contained in:
Dennis Eichhorn 2016-11-08 13:06:43 +01:00
parent 814f8f493d
commit 0f769089cb
5 changed files with 60 additions and 11 deletions

View File

@ -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());
}
}

View File

@ -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')),
];

View File

@ -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());
}
}

View File

@ -74,15 +74,19 @@ foreach ($elements as $key => $element) : $c++;
<form id="taskElementCreate" method="POST" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/task/element?csrf={$CSRF}'); ?>">
<table class="layout wf-100">
<tr><td><label for="iMessage"><?= $this->getText('Message'); ?></label>
<tr><td><textarea id="iMessage" name="desc"></textarea>
<tr><td><textarea id="iMessage" name="description"></textarea>
<tr><td><label for="iDue"><?= $this->getText('Due'); ?></label>
<tr><td><input type="datetime-local" id="iDue" name="due">
<tr><td><input type="datetime-local" id="iDue" name="due" value="<?= end($elements)->getDue()->format('Y-m-d\TH:i:s'); ?>">
<tr><td><label for="iStatus"><?= $this->getText('Status'); ?></label>
<tr><td><select id="iStatus" name="status">
<option>
<option value="<?= \Modules\Tasks\Models\TaskStatus::OPEN; ?>" selected>Open
<option value="<?= \Modules\Tasks\Models\TaskStatus::WORKING; ?>">Working
<option value="<?= \Modules\Tasks\Models\TaskStatus::SUSPENDED; ?>">Suspended
<option value="<?= \Modules\Tasks\Models\TaskStatus::CANCELED; ?>">Canceled
<option value="<?= \Modules\Tasks\Models\TaskStatus::DONE; ?>">Done
</select>
<tr><td><label for="iReceiver"><?= $this->getText('To'); ?></label>
<tr><td><input type="text" id="iReceiver" name="forward" placeholder="&#xf007; Guest">
<tr><td><input type="text" id="iReceiver" name="forward" value="<?= $this->request->getAccount(); ?>" placeholder="&#xf007; Guest">
<tr><td><input type="submit" value="<?= $this->getText('Create', 0, 0); ?>"><input type="hidden" name="task" value="<?= $this->request->getData('id') ?>"><input type="hidden" name="type" value="1">
</table>
</form>

View File

@ -74,15 +74,19 @@ foreach ($elements as $key => $element) : $c++;
<form id="taskElementCreate" method="POST" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/task/element?csrf={$CSRF}'); ?>">
<table class="layout wf-100">
<tr><td><label for="iMessage"><?= $this->getText('Message'); ?></label>
<tr><td><textarea id="iMessage" name="desc"></textarea>
<tr><td><textarea id="iMessage" name="description"></textarea>
<tr><td><label for="iDue"><?= $this->getText('Due'); ?></label>
<tr><td><input type="datetime-local" id="iDue" name="due">
<tr><td><input type="datetime-local" id="iDue" name="due" value="<?= end($elements)->getDue()->format('Y-m-d\TH:i:s'); ?>">
<tr><td><label for="iStatus"><?= $this->getText('Status'); ?></label>
<tr><td><select id="iStatus" name="status">
<option>
<option value="<?= \Modules\Tasks\Models\TaskStatus::OPEN; ?>" selected>Open
<option value="<?= \Modules\Tasks\Models\TaskStatus::WORKING; ?>">Working
<option value="<?= \Modules\Tasks\Models\TaskStatus::SUSPENDED; ?>">Suspended
<option value="<?= \Modules\Tasks\Models\TaskStatus::CANCELED; ?>">Canceled
<option value="<?= \Modules\Tasks\Models\TaskStatus::DONE; ?>">Done
</select>
<tr><td><label for="iReceiver"><?= $this->getText('To'); ?></label>
<tr><td><input type="text" id="iReceiver" name="forward" placeholder="&#xf007; Guest">
<tr><td><input type="text" id="iReceiver" name="forward" value="<?= $this->request->getAccount(); ?>" placeholder="&#xf007; Guest">
<tr><td><input type="submit" value="<?= $this->getText('Create', 0, 0); ?>"><input type="hidden" name="task" value="<?= $this->request->getData('id') ?>"><input type="hidden" name="type" value="1">
</table>
</form>