From 3d73b9a4b25c55481c09efeea982ae4e79484690 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sun, 7 Jan 2018 22:02:43 -0500 Subject: [PATCH] All main staff calendar endpoints moved --- .../Calendar/CalendarHandler.php | 6 +++-- .../Calendar/CalendarController.php | 12 ++++++++++ api/DataAccess/Calendar/CalendarGateway.php | 16 +++++++++++++ api/index.php | 2 +- js/calendar/mods-for-hesk-calendar.js | 24 +++++++++---------- 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/api/BusinessLogic/Calendar/CalendarHandler.php b/api/BusinessLogic/Calendar/CalendarHandler.php index 766ea537..ad5a1775 100644 --- a/api/BusinessLogic/Calendar/CalendarHandler.php +++ b/api/BusinessLogic/Calendar/CalendarHandler.php @@ -3,10 +3,8 @@ namespace BusinessLogic\Calendar; -use BusinessLogic\Exceptions\ApiFriendlyException; use BusinessLogic\Security\UserContext; use DataAccess\Calendar\CalendarGateway; -use PHPUnit\Runner\Exception; class CalendarHandler extends \BaseClass { private $calendarGateway; @@ -58,4 +56,8 @@ class CalendarHandler extends \BaseClass { return $events[0]; } + + public function deleteEvent($id, $userContext, $heskSettings) { + $this->calendarGateway->deleteEvent($id, $userContext, $heskSettings); + } } \ No newline at end of file diff --git a/api/Controllers/Calendar/CalendarController.php b/api/Controllers/Calendar/CalendarController.php index f7be1d0e..d586b310 100644 --- a/api/Controllers/Calendar/CalendarController.php +++ b/api/Controllers/Calendar/CalendarController.php @@ -73,6 +73,18 @@ class CalendarController extends \BaseClass { return output($calendarHandler->updateEvent($event, $userContext, $hesk_settings)); } + function delete($id) { + /* @var $userContext UserContext */ + global $applicationContext, $hesk_settings, $userContext; + + /* @var $calendarHandler CalendarHandler */ + $calendarHandler = $applicationContext->get(CalendarHandler::clazz()); + + $calendarHandler->deleteEvent($id, $userContext, $hesk_settings); + + return http_response_code(204); + } + private function transformJson($json, $id = null) { $event = new CalendarEvent(); diff --git a/api/DataAccess/Calendar/CalendarGateway.php b/api/DataAccess/Calendar/CalendarGateway.php index 416e7f1e..81b7026f 100644 --- a/api/DataAccess/Calendar/CalendarGateway.php +++ b/api/DataAccess/Calendar/CalendarGateway.php @@ -192,4 +192,20 @@ class CalendarGateway extends CommonDao { $this->close(); } + + /** + * @param $id int + * @param $userContext UserContext + * @param $heskSettings array + */ + public function deleteEvent($id, $userContext, $heskSettings) { + $this->init(); + + hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "calendar_event_reminder` + WHERE `event_id` = " . intval($id) . " AND `user_id` = " . intval($userContext->id)); + hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "calendar_event` + WHERE `id` = " . intval($id)); + + $this->close(); + } } \ No newline at end of file diff --git a/api/index.php b/api/index.php index 3888685c..2277d647 100644 --- a/api/index.php +++ b/api/index.php @@ -205,7 +205,7 @@ Link::all(array( '/v1/settings' => action(\Controllers\Settings\SettingsController::clazz(), RequestMethod::all()), // Calendar '/v1/calendar/events/staff' => action(\Controllers\Calendar\CalendarController::clazz(), array(RequestMethod::GET, RequestMethod::POST), SecurityHandler::INTERNAL_OR_AUTH_TOKEN), - '/v1/calendar/events/staff/{i}' => action(\Controllers\Calendar\CalendarController::clazz(), array(RequestMethod::PUT), SecurityHandler::INTERNAL_OR_AUTH_TOKEN), + '/v1/calendar/events/staff/{i}' => action(\Controllers\Calendar\CalendarController::clazz(), array(RequestMethod::PUT, RequestMethod::DELETE), SecurityHandler::INTERNAL_OR_AUTH_TOKEN), /* Internal use only routes */ // Resend email response diff --git a/js/calendar/mods-for-hesk-calendar.js b/js/calendar/mods-for-hesk-calendar.js index 677a5db1..2561381b 100644 --- a/js/calendar/mods-for-hesk-calendar.js +++ b/js/calendar/mods-for-hesk-calendar.js @@ -16,7 +16,7 @@ $(document).ready(function() { defaultView: $('#setting_default_view').text().trim(), events: function(start, end, timezone, callback) { $.ajax({ - url: heskPath + 'api/v1/calendar/events/staff?start=' + start + '&end=' + end, + url: heskPath + 'api/index.php/v1/calendar/events/staff?start=' + start + '&end=' + end, method: 'GET', dataType: 'json', headers: { 'X-Internal-Call': true }, @@ -160,17 +160,15 @@ $(document).ready(function() { $editForm.find('#delete-button').click(function() { var id = $editForm.find('input[name="id"]').val(); - var data = { - id: id, - action: 'delete' - }; - $.ajax({ method: 'POST', - url: heskPath + 'internal-api/admin/calendar/', - data: data, + url: heskPath + 'api/index.php/v1/calendar/events/staff/' + id, + headers: { + 'X-Internal-Call': true, + 'X-HTTP-Method-Override': 'DELETE' + }, success: function() { - removeFromCalendar(data.id); + removeFromCalendar(id); mfhAlert.success(mfhLang.text('event_deleted')); $('#edit-event-modal').modal('hide'); }, @@ -216,7 +214,7 @@ $(document).ready(function() { $.ajax({ method: 'POST', - url: heskPath + 'api/v1/calendar/events/staff', + url: heskPath + 'api/index.php/v1/calendar/events/staff', data: JSON.stringify(data), contentType: 'json', headers: { 'X-Internal-Call': true }, @@ -268,7 +266,7 @@ $(document).ready(function() { $.ajax({ method: 'POST', - url: heskPath + 'api/v1/calendar/events/staff/' + data.id, + url: heskPath + 'api/index.php/v1/calendar/events/staff/' + data.id, data: JSON.stringify(data), contentType: 'json', headers: { @@ -490,7 +488,7 @@ function respondToDragAndDrop(event, delta, revertFunc) { var heskPath = $('p#hesk-path').text(); if (event.type === 'TICKET') { - var uri = 'api/v1/staff/tickets/' + event.id + '/due-date'; + var uri = 'api/index.php/v1/staff/tickets/' + event.id + '/due-date'; $.ajax({ method: 'POST', url: heskPath + uri, @@ -541,7 +539,7 @@ function respondToDragAndDrop(event, delta, revertFunc) { reminderUnits: event.reminderUnits }; - var url = heskPath + 'api/v1/calendar/events/staff/' + event.id; + var url = heskPath + 'api/index.php/v1/calendar/events/staff/' + event.id; $.ajax({ method: 'POST', url: url,