<?php
namespace CityBanner\Subscriber;
use Throwable;
use Psr\Log\LoggerInterface;
use CityBanner\Service\Banners\WritingData;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class BannerSubscriber implements EventSubscriberInterface
{
private LoggerInterface $logger;
private WritingData $bannerClickWritingData;
public function __construct(LoggerInterface $logger, WritingData $bannerClickWritingData)
{
$this->logger = $logger;
$this->bannerClickWritingData = $bannerClickWritingData;
}
public static function getSubscribedEvents(): array
{
return [
"banners.loaded" => [['onBannerClickAction', 0]],
];
}
public function onBannerClickAction($event)
{
try {
$entityIds = $event->getIds();
$entityId = $entityIds[0] ?? null;
if (count($entityIds) > 1) {
return;
}
if (!is_null($entityId)) {
$this->bannerClickWritingData->upsertClickCount($entityId);
}
} catch (Throwable $exception) {
$this->logger->error($exception->getMessage());
}
}
}