<?php
namespace App\EventListener;
use App\Service\MailerService;
use ApiPlatform\Core\EventListener\EventPriorities;
use App\Entity\PreOrder;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use App\Service\TelegramApi;
class PreOrderCreatedListener implements EventSubscriberInterface
{
private $mailerService;
private $telegram;
private EntityManagerInterface $entityManager;
public function __construct(MailerService $mailerService, EntityManagerInterface $entityManager, TelegramApi $telegram)
{
$this->mailerService = $mailerService;
$this->entityManager = $entityManager;
$this->telegram = $telegram;
}
public static function getSubscribedEvents()
{
return [
KernelEvents::VIEW => ['sendPreOrderEmail', EventPriorities::POST_WRITE],
];
}
public function sendPreOrderEmail(ViewEvent $event)
{
$pre_order = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if (!$pre_order instanceof PreOrder || Request::METHOD_POST !== $method) {
return;
}
$newPreOrder = $this->entityManager->getRepository(PreOrder::class)->find($pre_order->getId());
if($newPreOrder->getManager() == null){
$content = "Нове замовлення на сайті в якому не вказаний менеджер! <a href='https://admin-cabinet.kramar-shop.com/pre-orders/update/{$newPreOrder->getId()}'>Перейти</a>";
$this->telegram->sendMessage($content);
}
$userEmail = $newPreOrder->getClient()->getEmail(); // Отримати email з вашого об'єкта користувача
$subject = 'KRAMAR LTD замовлення #' . $pre_order->getId();
$body = 'Вітаємо, замовлення успішно оформлено. Чекайте відповідь менеджера!';
$this->mailerService->sendRegistrationEmail($userEmail, $subject, $body);
}
}