diff --git a/Admin/Installer.php b/Admin/Installer.php index a4a9913..d22cced 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -40,7 +40,23 @@ class Installer extends InstallerAbstract switch ($dbPool->get('core')->getType()) { case DatabaseType::MYSQL: - + $dbPool->get('core')->con->beginTransaction(); + + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'support_ticket` ( + `support_ticket_id` int(11) NOT NULL AUTO_INCREMENT, + `support_ticket_task` int(11) DEFAULT NULL, + PRIMARY KEY (`support_ticket_id`), + KEY `support_ticket_task` (`support_ticket_task`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'support_ticket` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_ibfk_1` FOREIGN KEY (`support_ticket`) REFERENCES `' . $dbPool->get('core')->prefix . 'task` (`task_id`);' + )->execute(); + + $dbPool->get('core')->con->commit(); break; } } diff --git a/Controller.php b/Controller.php index 943d591..f0472da 100644 --- a/Controller.php +++ b/Controller.php @@ -20,6 +20,9 @@ use phpOMS\Module\ModuleAbstract; use phpOMS\Module\WebInterface; use phpOMS\Views\View; +use Modules\Support\Models\Ticket; +use Modules\Support\Models\TicketMapper; + /** * Support controller class. * @@ -88,6 +91,9 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Support/Theme/Backend/support-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002901101, $request, $response)); + $ticktes = TicketMapper::getNewest(50); + $view->setData('tickets', $tickets); + return $view; } diff --git a/Models/Ticket.php b/Models/Ticket.php index 84a3d5d..e9fb5f9 100644 --- a/Models/Ticket.php +++ b/Models/Ticket.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\Support; use Modules\Tasks\Models\Task; +use Modules\Tasks\Models\TaskType; /** * Issue class. @@ -25,31 +26,26 @@ use Modules\Tasks\Models\Task; * @link http://orange-management.com * @since 1.0.0 */ -class Ticket extends Task +class Ticket { private $id = 0; - private $task = 0; - /** - * Assigned group. - * - * @var int - * @since 1.0.0 - */ - private $group = 0; - - /** - * Assigned person. - * - * @var int - * @since 1.0.0 - */ - private $person = 0; + private $task = null; public function __construct() { - parent::__construct(); + $this->task = new Task(); + $this->task->setType(TaskType::HIDDEN); } + public function getTask() : Task + { + return $this->task; + } + + public function setTask(Task $task) /* : void */ + { + $this->task = $task; + } } diff --git a/Models/TicketMapper.php b/Models/TicketMapper.php index 9e262dc..dd31505 100644 --- a/Models/TicketMapper.php +++ b/Models/TicketMapper.php @@ -12,17 +12,19 @@ * @link http://orange-management.com */ declare(strict_types=1); -namespace Modules\Tasks\Models; +namespace Modules\Support\Models; use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\DataStorage\Database\Query\Column; use phpOMS\DataStorage\Database\RelationType; +use Modules\Tasks\Models\Task; + /** * Mapper class. * - * @category Tasks + * @category Support * @package Modules * @license OMS License 1.0 * @link http://orange-management.com @@ -38,8 +40,8 @@ class TicketMapper extends DataMapperAbstract * @since 1.0.0 */ protected static $columns = [ - 'ticket_id' => ['name' => 'ticket_id', 'type' => 'int', 'internal' => 'id'], - 'ticket_task' => ['name' => 'ticket_task', 'type' => 'int', 'internal' => 'task'], + 'support_ticket_id' => ['name' => 'support_ticket_id', 'type' => 'int', 'internal' => 'id'], + 'support_ticket_task' => ['name' => 'support_ticket_task', 'type' => 'int', 'internal' => 'task'], ]; /** @@ -48,10 +50,10 @@ class TicketMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static $isExtending = [ + protected static $ownsOne = [ 'task' => [ - 'mapper' => \Modules\Tasks\Models\TaskMapper::class, - 'src' => 'ticket_task', + 'mapper' => Task::class, + 'src' => 'support_ticket_task', ], ]; @@ -61,7 +63,7 @@ class TicketMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static $table = 'ticket'; + protected static $table = 'support_ticket'; /** * Primary field name. diff --git a/Theme/Backend/support-list.tpl.php b/Theme/Backend/support-list.tpl.php index bc8e8f0..2427410 100644 --- a/Theme/Backend/support-list.tpl.php +++ b/Theme/Backend/support-list.tpl.php @@ -13,24 +13,76 @@ */ /** * @var \phpOMS\Views\View $this + * @var \Modules\Tasks\Models\Task[] $tickets */ +$tickets = $this->getData('tasks'); echo $this->getData('nav')->render(); ?>
-
+
- + - - +
getHtml('Tickets') ?>getHtml('Tasks') ?>
getHtml('ID', 0, 0); ?> getHtml('Status') ?> - getHtml('Priority') ?> + getHtml('Due') ?> getHtml('Title') ?> - getHtml('Responsible') ?> + getHtml('Creator') ?> + getHtml('Created') ?>
getHtml('Empty', 0, 0); ?> + $ticket) : $c++; + $url = \phpOMS\Uri\UriFactory::build('{/base}/{/lang}/backend/support/single?{?}&id=' . $ticket->getId()); + $color = 'darkred'; + if($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::DONE) { $color = 'green'; } + elseif($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } + elseif($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } + elseif($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } + elseif($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } ?> +
getHtml('S' . $ticket->getTask()->getStatus()) ?> + getTask()->getDue()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?> + getTask()->getTitle(), ENT_COMPAT, 'utf-8'); ?> + getTask()->getCreatedBy()->getName1(), ENT_COMPAT, 'utf-8'); ?> + getTask()->getCreatedAt()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?> + +
getHtml('Empty', 0, 0); ?> +
+ +
+
+

getHtml('Settings') ?>

+
+
+ +
+
+
+
+
+
+ +
+

getHtml('Settings') ?>

+
+ +
getHtml('Received') ?>0 +
getHtml('Created') ?>0 +
getHtml('Forwarded') ?>0 +
getHtml('AverageAmount') ?>0 +
getHtml('AverageProcessTime') ?>0 +
getHtml('InTime') ?>0 +
+
+
+
\ No newline at end of file diff --git a/Theme/Backend/ticket-create.tpl.php b/Theme/Backend/ticket-create.tpl.php index 12f9915..3524d15 100644 --- a/Theme/Backend/ticket-create.tpl.php +++ b/Theme/Backend/ticket-create.tpl.php @@ -16,24 +16,28 @@ */ echo $this->getData('nav')->render(); ?> -
-

getHtml('Ticket'); ?>

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

getHtml('Ticket'); ?>

+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file