From d305ccf9b3a162210ac68ab09a7108acf334ad87 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Thu, 9 Nov 2017 22:02:26 -0500 Subject: [PATCH] Add POST endpoint for creating service messages --- .../ServiceMessages/ServiceMessageHandler.php | 37 ++++++++++++++++++- api/index.php | 2 + 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php b/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php index 474beb51..a1563807 100644 --- a/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php +++ b/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php @@ -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); + } + } } \ No newline at end of file diff --git a/api/index.php b/api/index.php index 4766701c..6700fa56 100644 --- a/api/index.php +++ b/api/index.php @@ -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