diff --git a/Controller.php b/Controller.php index 0772a94..7ad6558 100644 --- a/Controller.php +++ b/Controller.php @@ -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()))); } } diff --git a/Models/Task.php b/Models/Task.php index 2f21062..99f47e9 100644 --- a/Models/Task.php +++ b/Models/Task.php @@ -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 - */ - public function setType(\int $type) - { - if(!TaskType::isValidValue($type)) { - throw new InvalidEnumValue($type); - } - - $this->type = $type; + public function getSchedule() : Schedule { + return $this->schedule; } } diff --git a/Models/TaskMapper.php b/Models/TaskMapper.php index 88de648..a85919c 100644 --- a/Models/TaskMapper.php +++ b/Models/TaskMapper.php @@ -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. * diff --git a/Models/TaskTemplate.php b/Models/TaskTemplate.php new file mode 100644 index 0000000..8f77708 --- /dev/null +++ b/Models/TaskTemplate.php @@ -0,0 +1,38 @@ + + * @author Dennis Eichhorn + * @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 + * @author Dennis Eichhorn + * @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; +} diff --git a/Models/TaskType.php b/Models/TaskType.php index def85e6..8993a20 100644 --- a/Models/TaskType.php +++ b/Models/TaskType.php @@ -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; } diff --git a/Theme/backend/task-create.tpl.php b/Theme/backend/task-create.tpl.php index b70b765..d1e450c 100644 --- a/Theme/backend/task-create.tpl.php +++ b/Theme/backend/task-create.tpl.php @@ -22,20 +22,20 @@ echo $this->getData('nav')->render(); ?>

l11n->lang['Tasks']['Task']; ?>

-
+
-
+
-
+
-
+
-
+
-
-
+
+