src/EventListener/MessageHistoryListener.php line 32

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\EmailManager\SendMessageHistoryEmailManager;
  5. use App\Entity\MessageHistory\MessageHistory;
  6. use App\Entity\Order\Order;
  7. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  8. use Sylius\Component\Core\Repository\OrderRepositoryInterface;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. final class MessageHistoryListener
  11. {
  12.     private RequestStack $requestStack;
  13.     private OrderRepositoryInterface $orderRepository;
  14.     private SendMessageHistoryEmailManager $sendMessageHistoryEmailManager;
  15.     /**
  16.      * MessageHistoryListener constructor.
  17.      */
  18.     public function __construct(RequestStack $requestStackOrderRepositoryInterface $orderRepositorySendMessageHistoryEmailManager $sendMessageHistoryEmailManager)
  19.     {
  20.         $this->requestStack $requestStack;
  21.         $this->orderRepository $orderRepository;
  22.         $this->sendMessageHistoryEmailManager $sendMessageHistoryEmailManager;
  23.     }
  24.     public function preCreate(ResourceControllerEvent $resourceControllerEvent)
  25.     {
  26.         $orderId $this->requestStack->getCurrentRequest()->get('orderId');
  27.         if (null === $orderId) {
  28.             return;
  29.         }
  30.         /** @var Order $order */
  31.         $order $this->orderRepository->find($orderId);
  32.         if (null === $order) {
  33.             return;
  34.         }
  35.         $customerId $order->getCustomer()->getId();
  36.         /** @var MessageHistory $messageHistory */
  37.         $messageHistory $resourceControllerEvent->getSubject();
  38.         $messageHistory->setOrderId((int) $orderId);
  39.         $messageHistory->setCustomerId($customerId);
  40.     }
  41.     public function postCreate(ResourceControllerEvent $resourceControllerEvent)
  42.     {
  43.         $orderId $this->requestStack->getCurrentRequest()->get('orderId');
  44.         if (null === $orderId) {
  45.             return;
  46.         }
  47.         /** @var Order $order */
  48.         $order $this->orderRepository->find($orderId);
  49.         if (null === $order) {
  50.             return;
  51.         }
  52.         /** @var MessageHistory $messageHistory */
  53.         $messageHistory $resourceControllerEvent->getSubject();
  54.         $subject $messageHistory->getSubject();
  55.         $content $messageHistory->getMessage();
  56.         $customerEmail $order->getCustomer()->getEmail();
  57.         $channel $order->getChannel();
  58.         $contactEmail $channel->getContactEmail();
  59.         $this->sendMessageHistoryEmailManager->sendMessageHistory($customerEmail$contactEmail$channel$subject$content);
  60.     }
  61. }