<?php
namespace App\Listener;
use App\Helper\Event\EventHelper;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\Event\RequestEvent;
final class EventListener
{
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
$routeName = $request->attributes->get('_route');
if ($this->session->has('refreshEventID')) {
$this->session->remove('refreshEventID');
$this->session->remove('lastEventName');
$this->session->remove('purchaseEventInitiated');
}
if (($routeName === 'product_page' || $routeName == 'checkout_step1' || $routeName == 'checkout_single_page') && !$this->session->has('lastEventName')) {
$eventID = EventHelper::generateGuidv4();
$this->session->set('eventID', $eventID);
}
}
public function onKernelResponse(ResponseEvent $event)
{
$request = $event->getRequest();
$response = $event->getResponse();
if ($this->session->has('eventID')) {
$cookie = Cookie::create('eventID')
->withValue($this->session->get('eventID'))
->withExpires(time() + (60 * 60))
->withHttpOnly(false);
$response->headers->setCookie($cookie);
}
}
}