Mods-for-HESK-Netsyms/api/Controllers/Tickets/CustomerTicketController.php

71 lines
2.9 KiB
PHP
Raw Normal View History

2017-01-31 22:26:46 -05:00
<?php
namespace Controllers\Tickets;
2017-02-13 22:34:15 -05:00
use BusinessLogic\Helpers;
use BusinessLogic\Tickets\CreateTicketByCustomerModel;
use BusinessLogic\Tickets\TicketCreator;
2017-01-31 22:26:46 -05:00
use BusinessLogic\Tickets\TicketRetriever;
2017-04-24 22:11:28 -04:00
use BusinessLogic\ValidationModel;
2017-02-13 22:34:15 -05:00
use Controllers\JsonRetriever;
2017-01-31 22:26:46 -05:00
class CustomerTicketController {
2017-04-24 22:11:28 -04:00
function get() {
global $applicationContext, $hesk_settings;
$trackingId = isset($_GET['trackingId']) ? $_GET['trackingId'] : null;
$emailAddress = isset($_GET['email']) ? $_GET['email'] : null;
2017-01-31 22:26:46 -05:00
/* @var $ticketRetriever TicketRetriever */
2017-04-24 22:11:28 -04:00
$ticketRetriever = $applicationContext->get[TicketRetriever::class];
2017-01-31 22:26:46 -05:00
2017-04-24 22:11:28 -04:00
output($ticketRetriever->getTicketByTrackingIdAndEmail($trackingId, $emailAddress, $hesk_settings));
}
function post() {
global $applicationContext, $hesk_settings, $userContext;
/* @var $ticketCreator TicketCreator */
$ticketCreator = $applicationContext->get[TicketCreator::class];
2017-02-13 22:34:15 -05:00
$jsonRequest = JsonRetriever::getJsonData();
$ticket = $ticketCreator->createTicketByCustomer($this->buildTicketRequestFromJson($jsonRequest), $hesk_settings, $userContext);
2017-03-20 22:16:35 -04:00
return output($ticket, 201);
2017-02-13 22:34:15 -05:00
}
/**
* @param $json array
* @return CreateTicketByCustomerModel
*/
private function buildTicketRequestFromJson($json) {
$ticketRequest = new CreateTicketByCustomerModel();
$ticketRequest->name = Helpers::safeArrayGet($json, 'name');
$ticketRequest->email = Helpers::safeArrayGet($json, 'email');
$ticketRequest->category = Helpers::safeArrayGet($json, 'category');
$ticketRequest->priority = Helpers::safeArrayGet($json, 'priority');
$ticketRequest->subject = Helpers::safeArrayGet($json, 'subject');
$ticketRequest->message = Helpers::safeArrayGet($json, 'message');
$ticketRequest->html = Helpers::safeArrayGet($json, 'html');
$ticketRequest->location = Helpers::safeArrayGet($json, 'location');
$ticketRequest->suggestedKnowledgebaseArticleIds = Helpers::safeArrayGet($json, 'suggestedArticles');
$ticketRequest->userAgent = Helpers::safeArrayGet($json, 'userAgent');
$ticketRequest->screenResolution = Helpers::safeArrayGet($json, 'screenResolution');
2017-02-14 22:03:46 -05:00
$ticketRequest->ipAddress = Helpers::safeArrayGet($json, 'ip');
$ticketRequest->language = Helpers::safeArrayGet($json, 'language');
$ticketRequest->sendEmailToCustomer = Helpers::safeArrayGet($json, 'sendEmailToCustomer');
2017-02-13 22:34:15 -05:00
$ticketRequest->customFields = array();
$jsonCustomFields = Helpers::safeArrayGet($json, 'customFields');
if ($jsonCustomFields !== null && !empty($jsonCustomFields)) {
foreach ($jsonCustomFields as $key => $value) {
$ticketRequest->customFields[intval($key)] = $value;
}
}
return $ticketRequest;
}
2017-01-31 22:26:46 -05:00
}