From aa462d16f80ae33e301e2505e3231e67dc36f60c Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 16 Apr 2018 12:20:43 -0400 Subject: [PATCH] Fix some API issues' --- api/BusinessLogic/Tickets/TicketCreator.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/api/BusinessLogic/Tickets/TicketCreator.php b/api/BusinessLogic/Tickets/TicketCreator.php index 160b922c..871e9fbb 100644 --- a/api/BusinessLogic/Tickets/TicketCreator.php +++ b/api/BusinessLogic/Tickets/TicketCreator.php @@ -9,6 +9,7 @@ use BusinessLogic\Emails\EmailTemplateRetriever; use BusinessLogic\Exceptions\ValidationException; use BusinessLogic\Statuses\DefaultStatusForAction; use DataAccess\AuditTrail\AuditTrailGateway; +use DataAccess\Categories\CategoryGateway; use DataAccess\CustomFields\CustomFieldsGateway; use DataAccess\Security\UserGateway; use DataAccess\Settings\ModsForHeskSettingsGateway; @@ -65,6 +66,8 @@ class TicketCreator extends \BaseClass { /* @var $customFieldsGateway CustomFieldsGateway */ private $customFieldsGateway; + private $categoryGateway; + function __construct(NewTicketValidator $newTicketValidator, TrackingIdGenerator $trackingIdGenerator, Autoassigner $autoassigner, @@ -75,7 +78,8 @@ class TicketCreator extends \BaseClass { UserGateway $userGateway, ModsForHeskSettingsGateway $modsForHeskSettingsGateway, AuditTrailGateway $auditTrailGateway, - CustomFieldsGateway $customFieldsGateway) { + CustomFieldsGateway $customFieldsGateway, + CategoryGateway $categoryGateway) { $this->newTicketValidator = $newTicketValidator; $this->trackingIdGenerator = $trackingIdGenerator; $this->autoassigner = $autoassigner; @@ -87,6 +91,7 @@ class TicketCreator extends \BaseClass { $this->modsForHeskSettingsGateway = $modsForHeskSettingsGateway; $this->auditTrailGateway = $auditTrailGateway; $this->customFieldsGateway = $customFieldsGateway; + $this->categoryGateway = $categoryGateway; } /** @@ -120,8 +125,17 @@ class TicketCreator extends \BaseClass { : new StageTicket(); $ticket->trackingId = $this->trackingIdGenerator->generateTrackingId($heskSettings); - if ($heskSettings['autoassign']) { - $ticket->ownerId = $this->autoassigner->getNextUserForTicket($ticketRequest->category, $heskSettings)->id; + $category = null; + $categories = $this->categoryGateway->getAllCategories($heskSettings, $modsForHeskSettings); + foreach ($categories as $innerCategory) { + if ($innerCategory->id === $ticketRequest->category) { + $category = $innerCategory; + break; + } + } + if ($heskSettings['autoassign'] && $category->autoAssign) { + $autoassignOwner = $this->autoassigner->getNextUserForTicket($ticketRequest->category, $heskSettings); + $ticket->ownerId = $autoassignOwner === null ? null : $autoassignOwner->id; } // Transform one-to-one properties