From 13161696ae30f3b207d190a3c323add9a44aca10 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sun, 10 Dec 2017 22:01:18 -0500 Subject: [PATCH] Working on refactoring the calendar API --- .../Calendar/CalendarHandler.php | 18 +++++++++++ .../Calendar/CalendarController.php | 23 ++++++++++++++ api/DataAccess/Calendar/CalendarGateway.php | 30 ++++++++++++++++++- 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 api/BusinessLogic/Calendar/CalendarHandler.php create mode 100644 api/Controllers/Calendar/CalendarController.php diff --git a/api/BusinessLogic/Calendar/CalendarHandler.php b/api/BusinessLogic/Calendar/CalendarHandler.php new file mode 100644 index 00000000..f3374279 --- /dev/null +++ b/api/BusinessLogic/Calendar/CalendarHandler.php @@ -0,0 +1,18 @@ +calendarGateway = $calendarGateway; + } + + public function getEventsForStaff($startTime, $endTime, $searchEventsFilter, $heskSettings) { + return $this->calendarGateway->getEventsForStaff($startTime, $endTime, $searchEventsFilter, $heskSettings); + } +} \ No newline at end of file diff --git a/api/Controllers/Calendar/CalendarController.php b/api/Controllers/Calendar/CalendarController.php new file mode 100644 index 00000000..60a57b79 --- /dev/null +++ b/api/Controllers/Calendar/CalendarController.php @@ -0,0 +1,23 @@ +get(CalendarHandler::clazz()); + + $events = $calendarHandler->getEventsForStaff($startTime, $endTime, new SearchEventsFilter(), $hesk_settings); + + return output($events); + } +} \ No newline at end of file diff --git a/api/DataAccess/Calendar/CalendarGateway.php b/api/DataAccess/Calendar/CalendarGateway.php index 5fea19a3..b3ae4b92 100644 --- a/api/DataAccess/Calendar/CalendarGateway.php +++ b/api/DataAccess/Calendar/CalendarGateway.php @@ -86,10 +86,38 @@ class CalendarGateway extends CommonDao { AND (`owner` = " . $searchEventsFilter->reminderUserId; if ($searchEventsFilter->includeUnassignedTickets) { - $sql .= ""; + $sql .= " OR `owner` = 0 "; + } + + if ($searchEventsFilter->includeTicketsAssignedToOthers) { + $sql .= " OR `owner` NOT IN (0, " . $searchEventsFilter->reminderUserId . ") "; } $sql .= ")"; + + if (!empty($searchEventsFilter->categories)) { + $categoriesAsString = implode(',', $searchEventsFilter->categories); + $sql .= " AND `events`.`category` IN (" . $categoriesAsString . ")"; + } + + $rs = hesk_dbQuery($sql); + while ($row = hesk_dbFetchAssoc($rs)) { + $event = new TicketEvent(); + $event->trackingId = $row['trackid']; + $event->subject = $row['subject']; + $event->title = $row['subject']; + $event->startTime = $row['due_date']; + $event->url = $heskSettings['hesk_url'] . '/' . $heskSettings['admin_dir'] . '/admin_ticket.php?track=' . $event['trackingId']; + $event->categoryId = $row['category']; + $event->categoryName = $row['category_name']; + $event->backgroundColor = $row['background_color']; + $event->foregroundColor = $row['foreground_color']; + $event->displayBorder = $row['display_border']; + $event->owner = $row['owner_name']; + $event->priority = $row['priority']; + + $events[] = $event; + } } $this->close();