Add somre more fields

remotes/upstream/api-rewrite
Mike Koch 7 years ago
parent 1b6cca8ddf
commit 31ced3f572

@ -62,4 +62,14 @@ class CreateTicketByCustomerModel {
* @var int[]|null
*/
public $screenResolution;
/**
* @var int|null
*/
public $ipAddress;
/**
* @var string
*/
public $language;
}

@ -18,7 +18,7 @@ class CustomFieldValidator {
return false;
}
return count($customField['Categories']) === 0 ||
in_array($categoryId, $customField['Categories']);
return count($customField['category']) === 0 ||
in_array($categoryId, $customField['category']);
}
}

@ -122,6 +122,11 @@ class NewTicketValidator {
$validationModel->errorKeys[] = 'EMAIL_AT_MAX_OPEN_TICKETS';
}
if ($ticketRequest->language === null ||
$ticketRequest->language === '') {
$validationModel->errorKeys[] = 'MISSING_LANGUAGE';
}
return $validationModel;
}
}

@ -73,6 +73,8 @@ class TicketCreator {
$ticket->suggestedArticles = $ticketRequest->suggestedKnowledgebaseArticleIds;
$ticket->userAgent = $ticketRequest->userAgent;
$ticket->screenResolution = $ticketRequest->screenResolution;
$ticket->ipAddress = $ticketRequest->ipAddress;
$ticket->language = $ticketRequest->language;
$ticketGatewayGeneratedFields = $this->ticketGateway->createTicket($ticket, $heskSettings);

@ -49,6 +49,8 @@ class TicketController {
$ticketRequest->suggestedKnowledgebaseArticleIds = Helpers::safeArrayGet($json, 'suggestedArticles');
$ticketRequest->userAgent = Helpers::safeArrayGet($json, 'userAgent');
$ticketRequest->screenResolution = Helpers::safeArrayGet($json, 'screenResolution');
$ticketRequest->ipAddress = Helpers::safeArrayGet($json, 'ip');
$ticketRequest->language = Helpers::safeArrayGet($json, 'language');
$ticketRequest->customFields = array();
$jsonCustomFields = Helpers::safeArrayGet($json, 'customFields');

@ -92,13 +92,6 @@ class TicketGateway extends CommonDao {
function createTicket($ticket, $heskSettings) {
global $hesklang;
// If language is not set or default, set it to NULL.
if ($ticket->language === null || empty($ticket->language)) {
$language = (!$heskSettings['can_sel_lang']) ? HESK_DEFAULT_LANGUAGE : hesk_dbEscape($hesklang['LANGUAGE']);
} else {
$language = $ticket->language;
}
$dueDate = $ticket->dueDate ? "'{$ticket->dueDate}'" : "NULL";
// Prepare SQL for custom fields
$customWhere = '';
@ -129,6 +122,9 @@ class TicketGateway extends CommonDao {
&& isset($ticket->screenResolution[1])
&& $ticket->screenResolution[1] !== null ? intval($ticket->screenResolution[1]) : 'NULL';
$ipAddress = $ticket->ipAddress !== null
&& $ticket->ipAddress !== '' ? $ticket->ipAddress : '';
$sql = "INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "tickets`
(
`trackid`,
@ -171,7 +167,7 @@ class TicketGateway extends CommonDao {
NOW(),
'" . $suggestedArticles . "',
'" . hesk_dbEscape($ticket->ipAddress) . "',
'" . hesk_dbEscape($language) . "',
'" . hesk_dbEscape($ticket->language) . "',
'" . intval($ticket->openedBy) . "',
'" . intval($ticket->ownerId) . "',
'" . hesk_dbEscape($ticket->getAttachmentsForDatabase()) . "',

@ -429,4 +429,36 @@ class NewTicketValidatorTest extends TestCase {
//-- Assert
$this->assertArraySubset(['EMAIL_AT_MAX_OPEN_TICKETS'], $validationModel->errorKeys);
}
function testItAddsTheProperValidationErrorWhenTheCustomerSubmitsTicketWithLanguageNull() {
//-- Arrange
$this->ticketRequest->language = null;
$this->ticketValidators->method('isCustomerAtMaxTickets')
->with($this->ticketRequest->email, $this->heskSettings)
->willReturn(false);
//-- Act
$validationModel = $this->newTicketValidator->validateNewTicketForCustomer($this->ticketRequest,
$this->heskSettings,
$this->userContext);
//-- Assert
$this->assertArraySubset(['MISSING_LANGUAGE'], $validationModel->errorKeys);
}
function testItAddsTheProperValidationErrorWhenTheCustomerSubmitsTicketWithLanguageBlank() {
//-- Arrange
$this->ticketRequest->language = '';
$this->ticketValidators->method('isCustomerAtMaxTickets')
->with($this->ticketRequest->email, $this->heskSettings)
->willReturn(false);
//-- Act
$validationModel = $this->newTicketValidator->validateNewTicketForCustomer($this->ticketRequest,
$this->heskSettings,
$this->userContext);
//-- Assert
$this->assertArraySubset(['MISSING_LANGUAGE'], $validationModel->errorKeys);
}
}

@ -158,6 +158,8 @@ class CreateTicketTest extends TestCase {
$this->ticketRequest->suggestedKnowledgebaseArticleIds = [1, 2, 3];
$this->ticketRequest->userAgent = 'UserAgent';
$this->ticketRequest->screenResolution = [1400, 900];
$this->ticketRequest->ipAddress = ip2long('127.0.0.1');
$this->ticketRequest->language = 'English';
//-- Act
$ticket = $this->ticketCreator->createTicketByCustomer($this->ticketRequest, $this->heskSettings, $this->modsForHeskSettings, $this->userContext);
@ -175,6 +177,8 @@ class CreateTicketTest extends TestCase {
self::assertThat($ticket->suggestedArticles, self::equalTo($this->ticketRequest->suggestedKnowledgebaseArticleIds));
self::assertThat($ticket->userAgent, self::equalTo($this->ticketRequest->userAgent));
self::assertThat($ticket->screenResolution, self::equalTo($this->ticketRequest->screenResolution));
self::assertThat($ticket->ipAddress, self::equalTo($this->ticketRequest->ipAddress));
self::assertThat($ticket->language, self::equalTo($this->ticketRequest->language));
}
function testItReturnsTheGeneratedPropertiesOnTheTicket() {

Loading…
Cancel
Save