<?php
namespace App\EventSubscriber;
use App\Entity\Booking;
use App\Service\Basket;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Twig\Environment;
class TradeTrackerSubscriber implements EventSubscriberInterface
{
/**
* @var EntityManagerInterface
*/
protected $entityManager;
/**
* @var Environment
*/
protected $twig;
/**
* @var FlashBagInterface
*/
protected $flashBag;
/**
* @var Basket
*/
protected $basket;
public function __construct(
EntityManagerInterface $entityManager,
Environment $twig,
FlashBagInterface $flashBag,
Basket $basket,
) {
$this->entityManager = $entityManager;
$this->twig = $twig;
$this->flashBag = $flashBag;
$this->basket = $basket;
}
public function onRequest(RequestEvent $event)
{
$request = $event->getRequest();
if ('boeking_bedankt' !== $request->get('_route') || !$request->query->has('booking_id')) {
return;
}
$bookingId = $request->get('booking_id');
if (!$booking = $this->entityManager->find(Booking::class, $bookingId)) {
return;
}
$tradeTrackerScript = $this->twig->render(
'scripts/tradetracker.html.twig',
[
'booking' => $booking,
]
);
$this->flashBag->add('trade_tracker_script', $tradeTrackerScript);
}
public static function getSubscribedEvents()
{
return [
'kernel.request' => 'onRequest',
];
}
}