src/EventListener/PreOrderCreatedListener.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Service\MailerService;
  4. use ApiPlatform\Core\EventListener\EventPriorities;
  5. use App\Entity\PreOrder;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpKernel\Event\ViewEvent;
  10. use Symfony\Component\HttpKernel\KernelEvents;
  11. use App\Service\TelegramApi;
  12. class PreOrderCreatedListener implements EventSubscriberInterface
  13. {
  14.     private $mailerService;
  15.     private $telegram;
  16.     private EntityManagerInterface $entityManager;
  17.     public function __construct(MailerService $mailerServiceEntityManagerInterface $entityManagerTelegramApi $telegram)
  18.     {
  19.         $this->mailerService $mailerService;
  20.         $this->entityManager $entityManager;
  21.         $this->telegram $telegram;
  22.     }
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             KernelEvents::VIEW => ['sendPreOrderEmail'EventPriorities::POST_WRITE],
  27.         ];
  28.     }
  29.     public function sendPreOrderEmail(ViewEvent $event)
  30.     {
  31.         $pre_order $event->getControllerResult();
  32.         $method $event->getRequest()->getMethod();
  33.         if (!$pre_order instanceof PreOrder || Request::METHOD_POST !== $method) {
  34.             return;
  35.         }
  36.         $newPreOrder $this->entityManager->getRepository(PreOrder::class)->find($pre_order->getId());
  37.         if($newPreOrder->getManager() == null){
  38.             $content "Нове замовлення на сайті в якому не вказаний менеджер! <a href='https://admin-cabinet.kramar-shop.com/pre-orders/update/{$newPreOrder->getId()}'>Перейти</a>";
  39.             $this->telegram->sendMessage($content);
  40.         }
  41.         $userEmail $newPreOrder->getClient()->getEmail(); // Отримати email з вашого об'єкта користувача
  42.         $subject 'KRAMAR LTD замовлення #' $pre_order->getId();
  43.         $body 'Вітаємо, замовлення успішно оформлено. Чекайте відповідь менеджера!';
  44.         $this->mailerService->sendRegistrationEmail($userEmail$subject$body);
  45.     }
  46. }