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(); ?>
-
+
- = $this->getHtml('Tickets') ?>
+ = $this->getHtml('Tasks') ?>
- | = $this->getHtml('ID', 0, 0); ?>
| = $this->getHtml('Status') ?>
- | = $this->getHtml('Priority') ?>
+ | = $this->getHtml('Due') ?>
| = $this->getHtml('Title') ?>
- | = $this->getHtml('Responsible') ?>
+ | = $this->getHtml('Creator') ?>
+ | = $this->getHtml('Created') ?>
|
- | = $this->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'; } ?>
+ |
+ | = $this->getHtml('S' . $ticket->getTask()->getStatus()) ?>
+ | = htmlspecialchars($ticket->getTask()->getDue()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?>
+ | = htmlspecialchars($ticket->getTask()->getTitle(), ENT_COMPAT, 'utf-8'); ?>
+ | = htmlspecialchars($ticket->getTask()->getCreatedBy()->getName1(), ENT_COMPAT, 'utf-8'); ?>
+ | = htmlspecialchars($ticket->getTask()->getCreatedAt()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?>
+
+ |
| = $this->getHtml('Empty', 0, 0); ?>
+
|
+
+
+
+ = $this->getHtml('Settings') ?>
+
+
+
+
+ = $this->getHtml('Settings') ?>
+
+
+ | = $this->getHtml('Received') ?> | 0
+ |
|---|
| = $this->getHtml('Created') ?> | 0
+ |
|---|
| = $this->getHtml('Forwarded') ?> | 0
+ |
|---|
| = $this->getHtml('AverageAmount') ?> | 0
+ |
|---|
| = $this->getHtml('AverageProcessTime') ?> | 0
+ |
|---|
| = $this->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(); ?>
-
- = $this->getHtml('Ticket'); ?>
-
-
+
+
+
+ = $this->getHtml('Ticket'); ?>
+
+
-
+
\ No newline at end of file