src/EventSubscriber/TicketCreateEventSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use App\Event\TicketCreateEvent;
  6. use App\Service\Jira\JiraService;
  7. use App\Service\Mailing\MailingService;
  8. use App\Service\Mailing\MailContentTicket;
  9. class TicketCreateEventSubscriber implements EventSubscriberInterface
  10. {
  11.     private $mailer;
  12.     private $em;
  13.     private $jiraService;
  14.     public function __construct(
  15.         MailingService $mailer,
  16.         JiraService $jiraService,
  17.         EntityManagerInterface $em
  18.     ){
  19.         $this->mailer $mailer;
  20.         $this->jiraService $jiraService;
  21.         $this->em $em;
  22.     }
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             TicketCreateEvent::NAME => [
  27.                 ['syncJiraTicket'20],
  28.                 ['sendNotification'5]
  29.             ]
  30.         ];
  31.     }
  32.     public function syncJiraTicket(TicketCreateEvent $event)
  33.     {
  34.         $ticket $event->getTicket();
  35.         $jiraTicket $this->jiraService->createTicket(
  36.             'PT',
  37.             $ticket->getType(),
  38.             $ticket->getPriority(),
  39.             '['.$ticket->getCreatedBy()->getName().'] '.$ticket->getTitle(),
  40.             $ticket->getDescription(),
  41.             'Req'
  42.         );
  43.         if ( $jiraTicket ) {
  44.             $ticket->setJiraId($jiraTicket->id);
  45.             $ticket->setJiraTicket($jiraTicket->key);
  46.         }
  47.         $this->em->persist($ticket);
  48.         $this->em->flush();
  49.     }
  50.     public function sendNotification(TicketCreateEvent $event)
  51.     {
  52.         $this->mailer->send(
  53.             (new MailContentTicket())->newTicketAdded($event->getTicket()),
  54.             '[email protected]'
  55.         );
  56.     }
  57. }