Implementing new schedule class/table. Schedule can be used for many other modules and objects.

This commit is contained in:
Dennis Eichhorn 2016-02-11 21:09:52 +01:00
parent 39b286af7b
commit da1fa7f921
6 changed files with 69 additions and 30 deletions

View File

@ -15,6 +15,7 @@
*/
namespace Modules\Tasks;
use Model\Message\Redirect;
use Modules\Tasks\Models\Task;
use Modules\Tasks\Models\TaskElement;
use Modules\Tasks\Models\TaskMapper;
@ -26,6 +27,7 @@ use phpOMS\Message\RequestDestination;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\WebInterface;
use phpOMS\Uri\UriFactory;
use phpOMS\Views\View;
use phpOMS\Views\ViewLayout;
@ -105,6 +107,8 @@ class Controller extends ModuleAbstract implements WebInterface
'^.*/backend/task/single.*$' => [['dest' => '\Modules\Tasks\Controller:viewTaskView', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/task/create.*$' => [['dest' => '\Modules\Tasks\Controller:viewTaskCreate', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/task/analysis.*$' => [['dest' => '\Modules\Tasks\Controller:viewTaskAnalysis', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/api/task/create.*$' => [['dest' => '\Modules\Tasks\Controller:apiTaskCreate', 'method' => 'POST', 'type' => ViewLayout::NULL],],
];
/**
@ -124,7 +128,7 @@ class Controller extends ModuleAbstract implements WebInterface
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response));
$taskMapper = new TaskMapper($this->app->dbPool->get());
$tasks = $taskMapper->getNewest(25);
$tasks = $taskMapper->getNewest(25);
$view->addData('tasks', $tasks);
return $view;
@ -147,7 +151,7 @@ class Controller extends ModuleAbstract implements WebInterface
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response));
$taskMapper = new TaskMapper($this->app->dbPool->get());
$task = $taskMapper->get((int) $request->getData('id'));
$task = $taskMapper->get((int) $request->getData('id'));
$view->addData('task', $task);
return $view;
@ -214,7 +218,7 @@ class Controller extends ModuleAbstract implements WebInterface
$task->addElement($element);
$taskMapper->create($task);
$response->set($request->__toString(), $task->getId());
$response->set($request->__toString(), new Redirect(UriFactory::build('http://127.0.0.1/{/lang}/backend/task/single?id=' . $task->getId())));
}
}

View File

@ -14,6 +14,7 @@
* @link http://orange-management.com
*/
namespace Modules\Tasks\Models;
use Modules\Calendar\Models\Schedule;
use phpOMS\Datatypes\Exception\InvalidEnumValue;
/**
@ -76,7 +77,7 @@ class Task
* @var TaskType
* @since 1.0.0
*/
private $type = TaskType::TASK;
private $type = TaskType::SINGLE;
/**
* Status.
@ -110,6 +111,8 @@ class Task
*/
private $taskElements = [];
private $schedule = null;
/**
* Constructor.
*
@ -120,6 +123,7 @@ class Task
{
$this->createdAt = new \DateTime('now');
$this->due = (new \DateTime('now'))->modify('+1 day');
$this->schedule = new Schedule();
}
/**
@ -376,23 +380,8 @@ class Task
return $this->type;
}
/**
* Set task type.
*
* @param int $type
*
* @throws
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setType(\int $type)
{
if(!TaskType::isValidValue($type)) {
throw new InvalidEnumValue($type);
}
$this->type = $type;
public function getSchedule() : Schedule {
return $this->schedule;
}
}

View File

@ -36,6 +36,7 @@ class TaskMapper extends DataMapperAbstract
'task_status' => ['name' => 'task_status', 'type' => 'int', 'internal' => 'status'],
'task_due' => ['name' => 'task_due', 'type' => 'DateTime', 'internal' => 'due'],
'task_done' => ['name' => 'task_done', 'type' => 'DateTime', 'internal' => 'done'],
'task_schedule' => ['name' => 'task_schedule', 'type' => 'int', 'internal' => 'schedule'],
'task_created_by' => ['name' => 'task_created_by', 'type' => 'int', 'internal' => 'createdBy'],
'task_created_at' => ['name' => 'task_created_at', 'type' => 'DateTime', 'internal' => 'createdAt'],
];
@ -50,6 +51,13 @@ class TaskMapper extends DataMapperAbstract
],
];
protected static $hasOne = [
'schedule' => [
'mapper' => '\Modules\Calendar\Models\ScheduleMapper',
'src' => 'task_schedule',
],
];
/**
* Primary table.
*

38
Models/TaskTemplate.php Normal file
View File

@ -0,0 +1,38 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright 2013 Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
namespace Modules\Tasks\Models;
/**
* Task class.
*
* @category Modules
* @package Tasks
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class TaskTemplate extends Task
{
/**
* Type.
*
* @var TaskType
* @since 1.0.0
*/
private $type = TaskType::TEMPLATE;
}

View File

@ -30,6 +30,6 @@ use phpOMS\Datatypes\Enum;
*/
abstract class TaskType extends Enum
{
const TASK = 0;
const MODULE = 1;
const TEMPLATE = 1;
const SINGLE = 2;
}

View File

@ -22,20 +22,20 @@ echo $this->getData('nav')->render(); ?>
<h1><?= $this->l11n->lang['Tasks']['Task']; ?></h1>
<div class="inner">
<form id="fTask">
<form id="fTask" method="POST" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/task/create'); ?>">
<table class="layout wf-100">
<tbody>
<tr><td colspan="2"><label for="iReceiver"><?= $this->l11n->lang['Tasks']['To']; ?></label>
<tr><td><input type="text" id="iReceiver" placeholder="&#xf007; Guest"><td><button><?= $this->l11n->lang[0]['Add']; ?></button>
<tr><td><input type="text" id="iReceiver" name="forward" placeholder="&#xf007; Guest"><td><button><?= $this->l11n->lang[0]['Add']; ?></button>
<tr><td colspan="2"><label for="iObserver"><?= $this->l11n->lang['Tasks']['CC']; ?></label>
<tr><td><input type="text" id="iObserver" placeholder="&#xf007; Guest"><td><button><?= $this->l11n->lang[0]['Add']; ?></button>
<tr><td><input type="text" id="iObserver" name="observer" placeholder="&#xf007; Guest"><td><button><?= $this->l11n->lang[0]['Add']; ?></button>
<tr><td colspan="2"><label for="iDue"><?= $this->l11n->lang['Tasks']['Due']; ?></label>
<tr><td><input type="datetime-local" id="iDue" value="<?= (new \DateTime('NOW'))->format('Y-m-d\TH:i:s') ?>"><td>
<tr><td><input type="datetime-local" id="iDue" name="due" value="<?= (new \DateTime('NOW'))->format('Y-m-d\TH:i:s') ?>"><td>
<tr><td colspan="2"><label for="iTitle"><?= $this->l11n->lang['Tasks']['Title']; ?></label>
<tr><td><input type="text" id="iTitle" placeholder="&#xf040; <?= $this->l11n->lang['Tasks']['Title']; ?>"><td>
<tr><td><input type="text" id="iTitle" name="title" placeholder="&#xf040; <?= $this->l11n->lang['Tasks']['Title']; ?>"><td>
<tr><td colspan="2"><label for="iMessage"><?= $this->l11n->lang['Tasks']['Message']; ?></label>
<tr><td><textarea id="iMessage" placeholder="&#xf040;"></textarea><td>
<tr><td colspan="2"><input type="submit" value="<?= $this->l11n->lang[0]['Create']; ?>"><input type="hidden" name="type" value="1">
<tr><td><textarea id="iMessage" name="description" placeholder="&#xf040;"></textarea><td>
<tr><td colspan="2"><input type="submit" value="<?= $this->l11n->lang[0]['Create']; ?>"><input type="hidden" name="type" value="<?= \Modules\Tasks\Models\TaskType::TASK ?>">
</table>
</form>
</div>