Working on moving service messages to an API endpoint
parent
fd4732d978
commit
c985f80452
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace BusinessLogic\ServiceMessages;
|
||||
|
||||
|
||||
class ServiceMessage extends \BaseClass {
|
||||
/* @var $id int */
|
||||
public $id;
|
||||
|
||||
/* @var $dateCreated string */
|
||||
public $dateCreated;
|
||||
|
||||
/* @var $createdBy int */
|
||||
public $createdBy;
|
||||
|
||||
/* @var $title string */
|
||||
public $title;
|
||||
|
||||
/* @var $message string */
|
||||
public $message;
|
||||
|
||||
/* @var $style string */
|
||||
public $style;
|
||||
|
||||
/* @var $published bool */
|
||||
public $published;
|
||||
|
||||
/* @var $order int */
|
||||
public $order;
|
||||
|
||||
/* @var $icon string */
|
||||
public $icon;
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace BusinessLogic\ServiceMessages;
|
||||
|
||||
|
||||
// TODO Test
|
||||
use DataAccess\ServiceMessages\ServiceMessagesGateway;
|
||||
|
||||
class ServiceMessageHandler extends \BaseClass {
|
||||
/* @var $serviceMessageGateway ServiceMessagesGateway */
|
||||
private $serviceMessageGateway;
|
||||
|
||||
function __construct(ServiceMessagesGateway $serviceMessagesGateway) {
|
||||
$this->serviceMessageGateway = $serviceMessagesGateway;
|
||||
}
|
||||
|
||||
function createServiceMessage($serviceMessage, $heskSettings) {
|
||||
// TODO Validate
|
||||
|
||||
return $this->serviceMessageGateway->createServiceMessage($serviceMessage, $heskSettings);
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace BusinessLogic\ServiceMessages;
|
||||
|
||||
|
||||
class ServiceMessageStyle {
|
||||
const NONE = 'NONE'; // 0
|
||||
const SUCCESS = 'SUCCESS'; // 1
|
||||
const INFO = 'INFO'; // 2
|
||||
const NOTICE = 'NOTICE'; // 3
|
||||
const ERROR = 'ERROR'; // 4
|
||||
|
||||
static function getStyleById($id) {
|
||||
$styles = array(
|
||||
0 => self::NONE,
|
||||
1 => self::SUCCESS,
|
||||
2 => self::INFO,
|
||||
3 => self::NOTICE,
|
||||
4 => self::ERROR
|
||||
);
|
||||
|
||||
if (!isset($styles[$id])) {
|
||||
throw new \Exception("Style {$id} is not a valid service message style.");
|
||||
}
|
||||
|
||||
return $styles[$id];
|
||||
}
|
||||
|
||||
static function getIdForStyle($style) {
|
||||
$styles = array(
|
||||
self::NONE => 0,
|
||||
self::SUCCESS => 1,
|
||||
self::INFO => 2,
|
||||
self::NOTICE => 3,
|
||||
self::ERROR => 4
|
||||
);
|
||||
|
||||
if (!isset($styles[$style])) {
|
||||
throw new \Exception("Style {$style} is not a valid service message style.");
|
||||
}
|
||||
|
||||
return $styles[$style];
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Controllers\ServiceMessages;
|
||||
|
||||
use BusinessLogic\Security\UserContext;
|
||||
use BusinessLogic\ServiceMessages\ServiceMessage;
|
||||
use BusinessLogic\ServiceMessages\ServiceMessageHandler;
|
||||
use Controllers\JsonRetriever;
|
||||
|
||||
class ServiceMessagesController extends \BaseClass {
|
||||
function post() {
|
||||
global $applicationContext, $userContext, $hesk_settings;
|
||||
|
||||
/* @var $handler ServiceMessageHandler */
|
||||
$handler = $applicationContext->get(ServiceMessageHandler::clazz());
|
||||
|
||||
$data = JsonRetriever::getJsonData();
|
||||
$element = $handler->createServiceMessage($this->buildElementModel($data, $userContext), $hesk_settings);
|
||||
|
||||
return output($element, 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data array
|
||||
* @param $userContext UserContext
|
||||
* @return ServiceMessage
|
||||
*/
|
||||
private function buildElementModel($data, $userContext) {
|
||||
$serviceMessage = new ServiceMessage();
|
||||
$serviceMessage->createdBy = $userContext->id;
|
||||
$serviceMessage->icon = $data['icon'];
|
||||
$serviceMessage->message = $data['message'];
|
||||
$serviceMessage->published = $data['published'];
|
||||
$serviceMessage->style = $data['style'];
|
||||
|
||||
return $serviceMessage;
|
||||
}
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace DataAccess\ServiceMessages;
|
||||
|
||||
|
||||
use BusinessLogic\ServiceMessages\ServiceMessage;
|
||||
use BusinessLogic\ServiceMessages\ServiceMessageStyle;
|
||||
use DataAccess\CommonDao;
|
||||
|
||||
class ServiceMessagesGateway extends CommonDao {
|
||||
/**
|
||||
* @param $serviceMessage ServiceMessage
|
||||
* @return ServiceMessage
|
||||
*/
|
||||
function createServiceMessage($serviceMessage, $heskSettings) {
|
||||
$this->init();
|
||||
|
||||
// Get the latest service message order
|
||||
$res = hesk_dbQuery("SELECT `order` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` ORDER BY `order` DESC LIMIT 1");
|
||||
$row = hesk_dbFetchRow($res);
|
||||
$myOrder = intval($row[0]) + 10;
|
||||
|
||||
$style = ServiceMessageStyle::getIdForStyle($serviceMessage->style);
|
||||
$type = $serviceMessage->published ? 0 : 1;
|
||||
|
||||
// Insert service message into database
|
||||
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` (`author`,`title`,`message`,`style`,`type`,`order`, `icon`) VALUES (
|
||||
'" . intval($serviceMessage->createdBy) . "',
|
||||
'" . hesk_dbEscape($serviceMessage->title) . "',
|
||||
'" . hesk_dbEscape($serviceMessage->message) . "',
|
||||
'" . hesk_dbEscape($style) . "',
|
||||
'{$type}',
|
||||
'{$myOrder}',
|
||||
'" . hesk_dbEscape($serviceMessage->icon) . "'
|
||||
)");
|
||||
|
||||
$serviceMessage->id = hesk_dbInsertID();
|
||||
|
||||
$this->close();
|
||||
|
||||
return $serviceMessage;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue