Add POST endpoint for creating service messages

master
Mike Koch 7 years ago
parent c985f80452
commit d305ccf9b3
No known key found for this signature in database
GPG Key ID: 9BA5D7F8391455ED

@ -4,6 +4,8 @@ namespace BusinessLogic\ServiceMessages;
// TODO Test
use BusinessLogic\Exceptions\ValidationException;
use BusinessLogic\ValidationModel;
use DataAccess\ServiceMessages\ServiceMessagesGateway;
class ServiceMessageHandler extends \BaseClass {
@ -15,8 +17,41 @@ class ServiceMessageHandler extends \BaseClass {
}
function createServiceMessage($serviceMessage, $heskSettings) {
// TODO Validate
$this->validate($serviceMessage);
return $this->serviceMessageGateway->createServiceMessage($serviceMessage, $heskSettings);
}
/**
* @param $serviceMessage ServiceMessage
* @throws ValidationException
*/
private function validate($serviceMessage) {
$validationModel = new ValidationModel();
if ($serviceMessage->createdBy < 1) {
$validationModel->errorKeys[] = 'MISSING_CREATOR';
}
if ($serviceMessage->icon === null || trim($serviceMessage->icon) === '') {
$validationModel->errorKeys[] = 'MISSING_ICON';
}
if ($serviceMessage->message === null || trim($serviceMessage->message) === '') {
$validationModel->errorKeys[] = 'MISSING_MESSAGE';
}
if ($serviceMessage->title === null || trim($serviceMessage->title) === '') {
$validationModel->errorKeys[] = 'MISSING_TITLE';
}
if ($serviceMessage->style === null || trim($serviceMessage->style) === '') {
$validationModel->errorKeys[] = 'MISSING_STYLE';
}
try {
ServiceMessageStyle::getIdForStyle($serviceMessage->style);
} catch (\Exception $e) {
$validationModel->errorKeys[] = 'INVALID_STYLE';
}
if (count($validationModel->errorKeys) > 0) {
// Validation failed
throw new ValidationException($validationModel);
}
}
}

@ -202,6 +202,8 @@ Link::all(array(
'/v1/statuses' => action(\Controllers\Statuses\StatusController::clazz(), RequestMethod::all()),
// Settings
'/v1/settings' => action(\Controllers\Settings\SettingsController::clazz(), RequestMethod::all()),
// Service Messages
'/v1/service-messages' => action(\Controllers\ServiceMessages\ServiceMessagesController::clazz(), array(RequestMethod::POST)),
/* Internal use only routes */
// Resend email response

Loading…
Cancel
Save