vendor/uvdesk/core-framework/Workflow/Actions/Ticket/UpdateAgent.php line 60

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Workflow\Actions\Ticket;
  3. use Symfony\Component\DependencyInjection\ContainerInterface;
  4. use Webkul\UVDesk\CoreFrameworkBundle\Entity\User;
  5. use Webkul\UVDesk\AutomationBundle\Workflow\Event;
  6. use Webkul\UVDesk\AutomationBundle\Workflow\FunctionalGroup;
  7. use Webkul\UVDesk\AutomationBundle\Workflow\Events\TicketActivity;
  8. use Webkul\UVDesk\AutomationBundle\Workflow\Action as WorkflowAction;
  9. class UpdateAgent extends WorkflowAction
  10. {
  11.     public static function getId()
  12.     {
  13.         return 'uvdesk.ticket.assign_agent';
  14.     }
  15.     public static function getDescription()
  16.     {
  17.         return "Assign to agent";
  18.     }
  19.     public static function getFunctionalGroup()
  20.     {
  21.         return FunctionalGroup::TICKET;
  22.     }
  23.     public static function getOptions(ContainerInterface $container)
  24.     {
  25.         $agentCollection array_map(function ($agent) {
  26.             return [
  27.                 'id'   => $agent['id'],
  28.                 'name' => $agent['name'],
  29.             ];
  30.         }, $container->get('user.service')->getAgentPartialDataCollection());
  31.         array_unshift($agentCollection, [
  32.             'id'   => 'responsePerforming',
  33.             'name' => 'Response Performing Agent',
  34.         ]);
  35.         return $agentCollection;
  36.     }
  37.     public static function applyAction(ContainerInterface $containerEvent $event$value null)
  38.     {
  39.         $entityManager $container->get('doctrine.orm.entity_manager');
  40.         if (!$event instanceof TicketActivity) {
  41.             return;
  42.         } else {
  43.             $ticket $event->getTicket();
  44.             if (empty($ticket)) {
  45.                 return;
  46.             }
  47.         }
  48.         if ($value == 'responsePerforming' && is_object($currentUser $container->get('security.token_storage')->getToken()?->getUser())) {
  49.             if (null != $currentUser->getAgentInstance()) {
  50.                 $agent $currentUser;
  51.             }
  52.         } else {
  53.             $agent $entityManager->getRepository(User::class)->find($value);
  54.             if ($agent) {
  55.                 $agent $entityManager->getRepository(User::class)->findOneBy(array('email' => $agent->getEmail()));
  56.             }
  57.         }
  58.         if (!empty($agent)) {
  59.             if ($entityManager->getRepository(User::class)->findOneById($agent->getId())) {
  60.                 $ticket
  61.                     ->setAgent($agent);
  62.                 $entityManager->persist($ticket);
  63.                 $entityManager->flush();
  64.             }
  65.         } else {
  66.             // Agent Not Found. Disable Workflow/Prepared Response
  67.         }
  68.     }
  69. }