src/EventListener/PreOrderCreatedListener.php line 40

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. use App\Service\TelegramSendByPhone;
  13. class PreOrderCreatedListener implements EventSubscriberInterface
  14. {
  15.     private $mailerService;
  16.     private $telegram;
  17.     private $telegram_send_by_phone;
  18.     private EntityManagerInterface $entityManager;
  19.     public function __construct(MailerService $mailerServiceEntityManagerInterface $entityManagerTelegramApi $telegramTelegramSendByPhone $telegram_send_by_phone)
  20.     {
  21.         $this->mailerService $mailerService;
  22.         $this->entityManager $entityManager;
  23.         $this->telegram $telegram;
  24.         $this->telegram_send_by_phone $telegram_send_by_phone;
  25.     }
  26.     public static function getSubscribedEvents()
  27.     {
  28.         return [
  29.             KernelEvents::VIEW => ['sendPreOrderEmail'EventPriorities::POST_WRITE],
  30.         ];
  31.     }
  32.     public function sendPreOrderEmail(ViewEvent $event)
  33.     {
  34.         $pre_order $event->getControllerResult();
  35.         $method $event->getRequest()->getMethod();
  36.         if (!$pre_order instanceof PreOrder || Request::METHOD_POST !== $method) {
  37.             return;
  38.         }
  39.         $phoneTelegram false;
  40.         
  41.         $newPreOrder $this->entityManager->getRepository(PreOrder::class)->find($pre_order->getId());
  42.         if($newPreOrder->getManager() == null){
  43.             if($newPreOrder->getAccount()->getManager() == null){
  44.                 $content "Нове замовлення на сайті в якому не вказаний менеджер! <a href='https://admin-cabinet.kramar-shop.com/pre-orders/update/{$newPreOrder->getId()}'>Перейти</a>";
  45.                 $this->telegram->sendMessage($content);
  46.             }else{
  47.                 $newPreOrder->setManager$newPreOrder->getAccount()->getManager() );
  48.                 $phoneTelegram $newPreOrder->getAccount()->getManager()->getPhone();
  49.             }
  50.         }else{
  51.             $phoneTelegram $newPreOrder->getManager()->getPhone();
  52.         }
  53.         $this->entityManager->persist($newPreOrder);
  54.         $this->entityManager->flush();
  55.         if($phoneTelegram){
  56.             $content "Нове замовлення від " .$newPreOrder->getClient()->getFirstName() . " " $newPreOrder->getClient()->getLastName()  . "  https://admin-cabinet.kramar-shop.com/pre-orders/update/{$newPreOrder->getId()}";
  57.             if(!empty($phoneTelegram))
  58.                 $this->telegram_send_by_phone->send($newPreOrder->getManager()->getPhone(), $content);
  59.         }
  60.         $userEmail $newPreOrder->getClient()->getEmail(); // Отримати email з вашого об'єкта користувача
  61.         $subject 'KRAMAR LTD замовлення #' $pre_order->getId();
  62.         $body 'Вітаємо, замовлення успішно оформлено. Чекайте відповідь менеджера!';
  63.         if(!empty($userEmail))
  64.             $this->mailerService->sendRegistrationEmail($userEmail$subject$body);
  65.     }
  66. }