src/EventSubscriber/Messaging/ConversationSubscriber.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\Messaging;
  3. use App\Event\Messaging\ConversationCreatedEvent;
  4. use App\Event\Messaging\ConversationTransferredEvent;
  5. use App\EventSubscriber\AbstractEmailSubscriber;
  6. use App\Manager\MailTypeInterface;
  7. class ConversationSubscriber extends AbstractEmailSubscriber
  8. {
  9.     use MailerTeamTrait;
  10.     public static function getSubscribedEvents(): array
  11.     {
  12.         return [
  13.             ConversationCreatedEvent::class     => [['onConversationCreated'], ['onClaimConversationCreated']],
  14.             ConversationTransferredEvent::class => 'onConversationTransferred',
  15.         ];
  16.     }
  17.     public function onClaimConversationCreated(ConversationCreatedEvent $event): void
  18.     {
  19.         $conversation $event->getConversation();
  20.         $contrat $conversation->getContractNumbers();
  21.         if (false === $conversation->isClaim()) {
  22.             return;
  23.         }
  24.         $subject $this->transEmail('conversation.new_claim.subject', ['reason' => $conversation->getObject()]);
  25.         $message $this->templating->render('email/messaging/new_claim.html.twig', [
  26.             'conversation' => $conversation,
  27.             'contrat'      => $contrat,
  28.             'message'      => $conversation->getMessages()->first(),
  29.         ]);
  30.         $this->sendEmailToTeam($this->mailer$conversation->getTeam(), $message$subjectMailTypeInterface::MESSAGING_CONVERSATION_CREATED);
  31.     }
  32.     public function onConversationCreated(ConversationCreatedEvent $event): void
  33.     {
  34.         $conversation $event->getConversation();
  35.         if (true === $conversation->isClaim()) {
  36.             return;
  37.         }
  38.         $team $conversation->getTeam();
  39.         $conversationSubject $conversation->getSubject();
  40.         $contrat $conversation->getContractNumbers();
  41.         $subject $this->transEmail('conversation.new.subject').' : '
  42.             .($conversationSubject $conversationSubject->getTheme()->getLabel() : '').' - '.($conversationSubject $conversationSubject->getLabel() : '');
  43.         $message $this->templating->render('email/messaging/new_conversation.html.twig', [
  44.             'conversation' => $conversation,
  45.             'contrat'      => $contrat,
  46.             'subjectId'    => $conversationSubject->getId(),
  47.             'message'      => $conversation->getMessages()->first(),
  48.         ]);
  49.         $this->sendEmailToTeam($this->mailer$team$message$subjectMailTypeInterface::MESSAGING_CONVERSATION_CREATED);
  50.     }
  51.     public function onConversationTransferred(ConversationTransferredEvent $event): void
  52.     {
  53.         $conversation $event->getConversation();
  54.         $team $conversation->getTeam();
  55.         $contrat $conversation->getContractNumbers();
  56.         $subject $this->transEmail('conversation.transfer.subject');
  57.         $message $this->templating->render('email/messaging/transfer_conversation.html.twig', [
  58.             'conversation' => $conversation,
  59.             'contrat' => $contrat,
  60.             'message'      => $conversation->getMessages()->last(),
  61.         ]);
  62.         $this->sendEmailToTeam($this->mailer$team$message$subjectMailTypeInterface::MESSAGING_CONVERSATION_TRANSFERRED);
  63.     }
  64. }