<?php
namespace App\JarvisAI\EventSubscriber;
use App\JarvisAI\Event\UserAILogEvent;
use App\JarvisAI\Repository\UserAILogRepository;
use AppBundle\Entity\User;
use Doctrine\ORM\OptimisticLockException;
use Doctrine\ORM\Exception\ORMException;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class UserAILogSubscriber implements EventSubscriberInterface
{
/**
* @var UserAiLogRepository
*/
private $repository;
/**
* @var TokenStorageInterface
*/
private $tokenStorage;
/**
* @param UserAiLogRepository $repository
* @param TokenStorageInterface $tokenStorage
*/
public function __construct(UserAiLogRepository $repository, TokenStorageInterface $tokenStorage)
{
$this->repository = $repository;
$this->tokenStorage = $tokenStorage;
}
/**
* @return string[]
*/
public static function getSubscribedEvents(): array
{
return [
UserAILogEvent::NAME => 'onUserAILog',
];
}
/**
* @param UserAILogEvent $event
* @return void
* @throws ORMException
* @throws OptimisticLockException
*/
public function onUserAILog(UserAILogEvent $event): void
{
/** @var User $user */
$user = $this->tokenStorage->getToken()->getUser();
$this->repository->create($user, $event->getModel());
}
}