<?php
namespace App\EventListener;
use App\Entity\ActivityUser;
use App\Entity\Basket;
use App\Entity\Product;
use App\Service\Manager\AnalyticsManager;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class ActivityListener extends BaseListener
{
/**
* @var AnalyticsManager
*/
private $analyticsManager;
public function __construct(ContainerInterface $container, TokenStorageInterface $tokenStorage, EntityManagerInterface $entityManager, TranslatorInterface $translator, RequestStack $requestStack, RouterInterface $router, AnalyticsManager $analyticsManager)
{
parent::__construct($container, $tokenStorage, $entityManager, $translator, $requestStack, $router);
$this->analyticsManager = $analyticsManager;
}
/**
* @param ControllerEvent $event
* @return void
*/
public function onCoreController(ControllerEvent $event): void
{
$url = $event->getRequest()->attributes->get('url');
if (($event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) && $url) {
$phpsessid = $event->getRequest()->cookies->get('PHPSESSID');
$institution = $this->analyticsManager->getInstitutionByUrlTableOrInst($url);
$activityUser = $this->analyticsManager->getActivityUserRepo()->findOneByPhpsessidField($phpsessid, $institution->getUrl());
if (!$activityUser) {
$activityUser = new ActivityUser();
$activityUser
->setPhpsessid($phpsessid)
->setInstitution($institution);
$this->analyticsManager->getActivityUserRepo()->save($activityUser);
}
}
}
}