src/EventListener/PreOrderCreatedListener.php line 39

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