Add more endpoints for service messages

master
Mike Koch 7 years ago
parent 311a48487d
commit 6bef518ffa
No known key found for this signature in database
GPG Key ID: 9BA5D7F8391455ED

@ -42,13 +42,44 @@ class ServiceMessageHandler extends \BaseClass {
return $this->serviceMessageGateway->createServiceMessage($serviceMessage, $heskSettings);
}
function getServiceMessages($heskSettings) {
return $this->serviceMessageGateway->getServiceMessages($heskSettings);
}
function editServiceMessage($serviceMessage, $heskSettings) {
$this->validate($serviceMessage, false);
if ($serviceMessage->icon === null) {
switch ($serviceMessage->style) {
case ServiceMessageStyle::NONE:
$serviceMessage->icon = '';
break;
case ServiceMessageStyle::INFO:
$serviceMessage->icon = 'fa fa-comment';
break;
case ServiceMessageStyle::NOTICE:
$serviceMessage->icon = 'fa fa-exclamation-triangle';
break;
case ServiceMessageStyle::ERROR:
$serviceMessage->icon = 'fa fa-times-circle';
break;
case ServiceMessageStyle::SUCCESS:
$serviceMessage->icon = 'fa fa-check-circle';
break;
}
}
return $this->serviceMessageGateway->updateServiceMessage($serviceMessage, $heskSettings);
}
/**
* @param $serviceMessage ServiceMessage
* @param bool $isNew
* @throws ValidationException
*/
private function validate($serviceMessage) {
private function validate($serviceMessage, $isNew = true) {
$validationModel = new ValidationModel();
if ($serviceMessage->createdBy < 1) {
if ($isNew && $serviceMessage->createdBy < 1) {
$validationModel->errorKeys[] = 'MISSING_CREATOR';
}
if ($serviceMessage->message === null || trim($serviceMessage->message) === '') {

@ -8,6 +8,15 @@ use BusinessLogic\ServiceMessages\ServiceMessageHandler;
use Controllers\JsonRetriever;
class ServiceMessagesController extends \BaseClass {
function get() {
global $applicationContext, $hesk_settings;
/* @var $handler ServiceMessageHandler */
$handler = $applicationContext->get(ServiceMessageHandler::clazz());
return output($handler->getServiceMessages($hesk_settings));
}
function post() {
global $applicationContext, $userContext, $hesk_settings;
@ -20,14 +29,35 @@ class ServiceMessagesController extends \BaseClass {
return output($element, 201);
}
function put() {
global $applicationContext, $hesk_settings;
/* @var $handler ServiceMessageHandler */
$handler = $applicationContext->get(ServiceMessageHandler::clazz());
$data = JsonRetriever::getJsonData();
$element = $handler->editServiceMessage($this->buildElementModel($data, null, false), $hesk_settings);
return output($element);
}
/**
* @param $data array
* @param $userContext UserContext
* @return ServiceMessage
*/
private function buildElementModel($data, $userContext) {
private function buildElementModel($data, $userContext, $creating = true) {
$serviceMessage = new ServiceMessage();
$serviceMessage->createdBy = $userContext->id;
if (!$creating) {
$serviceMessage->id = $data['id'];
$serviceMessage->order = $data['order'];
}
if ($creating) {
$serviceMessage->createdBy = $userContext->id;
}
$serviceMessage->title = $data['title'];
$serviceMessage->icon = $data['icon'];
$serviceMessage->message = $data['message'];

@ -42,7 +42,59 @@ class ServiceMessagesGateway extends CommonDao {
WHERE `id` = " . intval($serviceMessage->id));
$row = hesk_dbFetchAssoc($rs);
$serviceMessage->dateCreated = $row['dt'];
$serviceMessage->order = $row['order'];
$serviceMessage->order = intval($row['order']);
$this->close();
return $serviceMessage;
}
function getServiceMessages($heskSettings) {
$this->init();
$serviceMessages = array();
$rs = hesk_dbQuery("SELECT * FROM `". hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` ORDER BY `id`");
while ($row = hesk_dbFetchAssoc($rs)) {
$serviceMessage = new ServiceMessage();
$serviceMessage->id = $row['id'];
$serviceMessage->published = intval($row['type']) !== 1;
$serviceMessage->createdBy = intval($row['author']);
$serviceMessage->order = intval($row['order']);
$serviceMessage->dateCreated = $row['dt'];
$serviceMessage->title = $row['title'];
$serviceMessage->message = $row['message'];
$serviceMessage->style = ServiceMessageStyle::getStyleById($row['style']);
$serviceMessage->icon = $row['icon'];
$serviceMessages[] = $serviceMessage;
}
$this->close();
return $serviceMessages;
}
function updateServiceMessage($serviceMessage, $heskSettings) {
$this->init();
$style = ServiceMessageStyle::getIdForStyle($serviceMessage->style);
$type = $serviceMessage->published ? 0 : 1;
hesk_dbQuery("UPDATE `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
SET `title` = '" . hesk_dbEscape($serviceMessage->title) . "',
`message` = '" . hesk_dbEscape($serviceMessage->message) . "',
`style` = '" . intval($style) . "',
`type` = " . intval($type) . ",
`icon` = '" . hesk_dbEscape($serviceMessage->icon) . "'
WHERE `id` = " . intval($serviceMessage->id));
$otherFieldsRs = hesk_dbQuery("SELECT `dt`, `author`, `order` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
WHERE `id` = " . intval($serviceMessage->id));
$otherFields = hesk_dbFetchAssoc($otherFieldsRs);
$serviceMessage->order = intval($otherFields['order']);
$serviceMessage->createdBy = intval($otherFields['author']);
$serviceMessage->dateCreated = $otherFields['dt'];
$this->close();

@ -203,7 +203,7 @@ Link::all(array(
// Settings
'/v1/settings' => action(\Controllers\Settings\SettingsController::clazz(), RequestMethod::all()),
// Service Messages
'/v1/service-messages' => action(\Controllers\ServiceMessages\ServiceMessagesController::clazz(), array(RequestMethod::POST)),
'/v1/service-messages' => action(\Controllers\ServiceMessages\ServiceMessagesController::clazz(), array(RequestMethod::GET, RequestMethod::POST, RequestMethod::PUT)),
/* Internal use only routes */
// Resend email response

Loading…
Cancel
Save