diff --git a/Admin/Installer.php b/Admin/Installer.php index c53e7b4..b20aa6b 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -47,12 +47,12 @@ class Installer extends InstallerAbstract $dbPool->get('core')->con->prepare( 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'task` ( `task_id` int(11) NOT NULL AUTO_INCREMENT, - `task_title` varchar(30) DEFAULT NULL, + `task_title` varchar(60) DEFAULT NULL, `task_desc` text NOT NULL, `task_type` tinyint(1) NOT NULL, `task_status` tinyint(1) NOT NULL, `task_due` datetime NOT NULL, - `task_done` datetime NOT NULL, + `task_done` datetime DEFAULT NULL, `task_created_by` int(11) NOT NULL, `task_created_at` datetime NOT NULL, PRIMARY KEY (`task_id`), diff --git a/Controller.php b/Controller.php index bb1041c..0772a94 100644 --- a/Controller.php +++ b/Controller.php @@ -15,8 +15,11 @@ */ namespace Modules\Tasks; -use Modules\Navigation\Models\Navigation; -use Modules\Navigation\Views\NavigationView; +use Modules\Tasks\Models\Task; +use Modules\Tasks\Models\TaskElement; +use Modules\Tasks\Models\TaskMapper; +use Modules\Tasks\Models\TaskStatus; +use Modules\Tasks\Models\TaskType; use phpOMS\Contract\RenderableInterface; use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestDestination; @@ -120,6 +123,10 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Tasks/Theme/Backend/task-dashboard'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + $taskMapper = new TaskMapper($this->app->dbPool->get()); + $tasks = $taskMapper->getNewest(25); + $view->addData('tasks', $tasks); + return $view; } @@ -139,6 +146,10 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Tasks/Theme/Backend/task-single'); $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')); + $view->addData('task', $task); + return $view; } @@ -180,4 +191,30 @@ class Controller extends ModuleAbstract implements WebInterface return $view; } + public function apiTaskCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $taskMapper = new TaskMapper($this->app->dbPool->get()); + + $task = new Task(); + $task->setTitle($request->getData('title') ?? ''); + $task->setDescription($request->getData('description') ?? ''); + $task->setCreatedBy($request->getAccount()); + $task->setCreatedAt(new \DateTime('now')); + $task->setDue(new \DateTime($request->getData('due') ?? 'now')); + $task->setStatus(TaskStatus::OPEN); + $task->setType(TaskType::TASK); + + $element = new TaskElement(); + $element->setForwarded($request->getData('forward') ?? $request->getAccount()); + $element->setCreatedAt($task->getCreatedAt()); + $element->setCreatedBy($task->getCreatedBy()); + $element->setDue($task->getDue()); + $element->setStatus(TaskStatus::OPEN); + + $task->addElement($element); + + $taskMapper->create($task); + $response->set($request->__toString(), $task->getId()); + } + } diff --git a/Models/Task.php b/Models/Task.php index dc53ef1..2f21062 100644 --- a/Models/Task.php +++ b/Models/Task.php @@ -215,9 +215,9 @@ class Task * @since 1.0.0 * @author Dennis Eichhorn */ - public function getDone() + public function getDone() : \DateTime { - return $this->done; + return $this->done ?? new \DateTime('now'); } /** diff --git a/Models/TaskElement.php b/Models/TaskElement.php index 721cd29..78634a5 100644 --- a/Models/TaskElement.php +++ b/Models/TaskElement.php @@ -92,7 +92,7 @@ class TaskElement * @var int * @since 1.0.0 */ - private $forwarded = null; + private $forwarded = 0; /** * Constructor. @@ -152,6 +152,10 @@ class TaskElement public function setCreatedBy(int $creator) { $this->createdBy = $creator; + + if($this->forwarded === 0) { + $this->setForwarded($this->createdBy); + } } /** @@ -210,7 +214,7 @@ class TaskElement */ public function getForwarded() : int { - return $this->forwarded ?? 0; + return $this->forwarded; } /** diff --git a/Models/TaskElementMapper.php b/Models/TaskElementMapper.php index 1af26c2..4f5ff56 100644 --- a/Models/TaskElementMapper.php +++ b/Models/TaskElementMapper.php @@ -71,7 +71,7 @@ class TaskElementMapper extends DataMapperAbstract try { $objId = parent::create($obj); } catch (\Exception $e) { - var_dump($e); + var_dump($e->getMessage()); return false; } diff --git a/Models/TaskMapper.php b/Models/TaskMapper.php index 62c8d68..88de648 100644 --- a/Models/TaskMapper.php +++ b/Models/TaskMapper.php @@ -101,7 +101,7 @@ class TaskMapper extends DataMapperAbstract $this->db->con->prepare($query->toSql())->execute(); } catch (\Exception $e) { - var_dump($e); + var_dump($e->getMessage()); return false; } diff --git a/Theme/backend/Lang/en.lang.php b/Theme/backend/Lang/en.lang.php index 37a7a46..5e71180 100644 --- a/Theme/backend/Lang/en.lang.php +++ b/Theme/backend/Lang/en.lang.php @@ -56,4 +56,9 @@ $MODLANG['Tasks'] = [ 'Upload' => 'Upload', 'Week' => 'Week', 'Year' => 'Year', + 'S1' => 'Open', + 'S2' => 'Working', + 'S3' => 'Suspended', + 'S4' => 'Canceled', + 'S5' => 'Done', ]; diff --git a/Theme/backend/task-dashboard.tpl.php b/Theme/backend/task-dashboard.tpl.php index 21778c0..c2258d0 100644 --- a/Theme/backend/task-dashboard.tpl.php +++ b/Theme/backend/task-dashboard.tpl.php @@ -15,14 +15,15 @@ */ /** * @var \phpOMS\Views\View $this + * @var \Modules\Tasks\Models\Task[] $tasks */ +$tasks = $this->getData('tasks'); echo $this->getData('nav')->render(); ?>
- + $task) : $c++; + $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/task/single?id=' . $task->getId()); + $color = 'darkred'; + if($task->getStatus() === \Modules\Tasks\Models\TaskStatus::DONE) { $color = 'green'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } ;?> + +
l11n->lang['Tasks']['Tasks']; ?>
l11n->lang[0]['ID']; ?> l11n->lang['Tasks']['Status']; ?> l11n->lang['Tasks']['Due']; ?> l11n->lang['Tasks']['Title']; ?> @@ -30,7 +31,23 @@ echo $this->getData('nav')->render(); ?> l11n->lang['Tasks']['Created']; ?>
l11n->lang['Tasks']['S' . $task->getStatus()]; ?> + getDue()->format('Y-m-d H:i'); ?> + getTitle(); ?> + getCreatedBy(); ?> + getCreatedAt()->format('Y-m-d H:i'); ?> +
l11n->lang[0]['Empty']; ?> +
diff --git a/Theme/backend/task-single.tpl.php b/Theme/backend/task-single.tpl.php index acc40b3..a8118a2 100644 --- a/Theme/backend/task-single.tpl.php +++ b/Theme/backend/task-single.tpl.php @@ -14,90 +14,77 @@ * @link http://orange-management.com */ /** - * @var \phpOMS\Views\View $this + * @var \phpOMS\Views\View $this + * @var \Modules\Tasks\Models\Task $task */ -$task = new \Modules\Tasks\Models\Task(null); +$task = $this->getData('task'); +$elements = $task->getTaskElements(); +$cElements = count($elements); echo $this->getData('nav')->render(); ?> -
-
- -
-
-
-

- getTitle(); ?> - - -

- -
- getCreated()->format('Y-m-d H:i:s'); ?> - getDue()->format('Y-m-d H:i:s'); ?> - getDone()->format('Y-m-d H:i:s'); ?> getStatus(); ?> - getCreator(); ?> - getDescription(); ?> +
+

getTitle(); ?>

+
+
Due getDue()->format('Y-m-d H:i'); ?>
+
Created getCreatedAt()->format('Y-m-d H:i'); ?>
+
+ getDescription(); ?> +
+
Created getCreatedBy(); ?>
+
Status getStatus(); ?>
-
+ - - * @author Dennis Eichhorn - * @copyright 2013 Dennis Eichhorn - * @license OMS License 1.0 - * @version 1.0.0 - * @link http://orange-management.com - */ -$elements = $task->getTaskElements(); -foreach ($elements as $element): ?> -
-
- getCreated()->format('Y-m-d H:i:s'); ?> - getDue()->format('Y-m-d H:i:s'); ?> getStatus(); ?> - getForwarded(); ?> getCreator(); ?> - getDescription(); ?> -
-
- - * @author Dennis Eichhorn - * @copyright 2013 Dennis Eichhorn - * @license OMS License 1.0 - * @version 1.0.0 - * @link http://orange-management.com - */ endforeach; ?> + $element) : $c++; + if($element->getStatus() === \Modules\Tasks\Models\TaskStatus::DONE) { $color = 'green'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } ?> +
+
l11n->lang['Tasks']['S' . $element->getStatus()]; ?>
+
getCreatedBy(); ?> - getCreatedAt()->format('Y-m-d H:i'); ?>
+
+ getDescription() !== '') : ?> +
+
+
+ getDescription(); ?> +
+
+
+ +
+ getStatus() !== \Modules\Tasks\Models\TaskStatus::CANCELED || + $element->getStatus() !== \Modules\Tasks\Models\TaskStatus::DONE || + $element->getStatus() !== \Modules\Tasks\Models\TaskStatus::SUSPENDED || $c != $cElements + ) : ?> +
Due getDue()->format('Y-m-d H:i'); ?>
+ + getForwarded() !== 0) : ?> +
Forwarded getForwarded(); ?>
+ +
+ -
-
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
- -
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
-
+