Working on refactoring the calendar API

master
Mike Koch 6 years ago
parent 5ee4ed5864
commit 13161696ae
No known key found for this signature in database
GPG Key ID: 9BA5D7F8391455ED

@ -0,0 +1,18 @@
<?php
namespace BusinessLogic\Calendar;
use DataAccess\Calendar\CalendarGateway;
class CalendarHandler extends \BaseClass {
private $calendarGateway;
public function __construct(CalendarGateway $calendarGateway) {
$this->calendarGateway = $calendarGateway;
}
public function getEventsForStaff($startTime, $endTime, $searchEventsFilter, $heskSettings) {
return $this->calendarGateway->getEventsForStaff($startTime, $endTime, $searchEventsFilter, $heskSettings);
}
}

@ -0,0 +1,23 @@
<?php
namespace Controllers\Calendar;
use BusinessLogic\Calendar\CalendarHandler;
use BusinessLogic\Calendar\SearchEventsFilter;
class CalendarController extends \BaseClass {
function get() {
global $applicationContext, $hesk_settings;
$startTime = isset($_GET['start']) ? $_GET['start'] : round(microtime(true) * 1000);
$endTime = isset($_GET['end']) ? $_GET['end'] : round(microtime(true) * 1000);
/* @var $calendarHandler CalendarHandler */
$calendarHandler = $applicationContext->get(CalendarHandler::clazz());
$events = $calendarHandler->getEventsForStaff($startTime, $endTime, new SearchEventsFilter(), $hesk_settings);
return output($events);
}
}

@ -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();

Loading…
Cancel
Save