<?php
namespace App\EventSubscriber\App;
use App\Event\SearchtermEnteredEvent;
use App\Service\ActivityMonitoringService;
use App\Service\ConversionEventService;
use App\Service\SearchtermEnteredEventService;
use Exception;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
class SearchtermEnteredEventSubscriber implements EventSubscriberInterface
{
/** @var ActivityMonitoringService */
private $activityMonitoringService;
/** @var LoggerInterface */
private $logger;
/** @var ConversionEventService */
private $conversionEventService;
/** @var RequestStack */
private $requestStack;
/** @var SearchtermEnteredEventService */
private $searchtermEnteredEventService;
public function __construct(ActivityMonitoringService $activityMonitoringService, LoggerInterface $logger, ConversionEventService $conversionEventService, RequestStack $requestStack, SearchtermEnteredEventService $searchtermEnteredEventService)
{
$this->activityMonitoringService = $activityMonitoringService;
$this->logger = $logger;
$this->conversionEventService = $conversionEventService;
$this->requestStack = $requestStack;
$this->searchtermEnteredEventService = $searchtermEnteredEventService;
}
public static function getSubscribedEvents()
{
return [
SearchtermEnteredEvent::class => 'onSearchtermEnteredEvent',
];
}
/** @throws Exception */
public function onSearchtermEnteredEvent(SearchtermEnteredEvent $event): void
{
$this->searchtermEnteredEventService->writeEvent(
$event->getRequest(),
$event->getSearchterm(),
$event->getContext(),
$event->getResultset(),
$event->getMergedResultset(),
$event->getUser(),
$event->getTotalNumberOfResults(),
$event->getNumberOfResultsPerBlock()
);
}
}