<?php
/**
* Created by PhpStorm.
* User: frup64362
* Date: 12/08/2016
* Time: 13:49
*/
namespace App\Listener;
use App\Entity\Article;
use App\Entity\ListeDiffusion;
use App\Entity\ListeDiffusionSup;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Process\Process;
use Symfony\Component\Validator\Constraints\IsFalse;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ReviewsArticleListener implements EventSubscriberInterface
{
/**
* ReviewsArticleListener constructor.
*/
public function __construct(private readonly ContainerInterface $container, private readonly SessionInterface $session, private readonly EntityManagerInterface $entityManager)
{
}
public static function getSubscribedEvents()
{
return [
RequestEvent::class => 'onKernelRequest',
];
}
public function onKernelRequest(\Symfony\Component\HttpKernel\Event\RequestEvent $event)
{
$user = $this->container->get('security.token_storage')->getToken();
if ($event->getRequest()->attributes->get('_route') == 'detailarticle' && $user) {
$slug = $event->getRequest()->attributes->get('slug');
$article = $this->entityManager->getRepository(Article::class)->findOneBySlug($slug);
$listDiffusion = $this->entityManager->getRepository(ListeDiffusion::class)
->findOneBy(['utilisateur' => $user->getUser()->getUtilisateur(), 'article' => $article]);
if ($listDiffusion && $listDiffusion->getLu() === false) {
$listDiffusion->setLu(true);
$this->entityManager->persist($listDiffusion);
$this->entityManager->flush();
}
}
if ($event->getRequest()->attributes->get('_route') == 'detail_cts_article' && $user) {
$slug = $event->getRequest()->attributes->get('slug');
$article = $this->entityManager->getRepository(Article::class)->findOneBySlug($slug);
$listDiffusionSup = $this->entityManager->getRepository(ListeDiffusionSup::class)
->findOneBy(['utilisateur' => $user->getUser()->getUtilisateur(), 'article' => $article]);
if ($listDiffusionSup && $listDiffusionSup->getLu() === false) {
$listDiffusionSup->setLu(true);
$this->entityManager->persist($listDiffusionSup);
$this->entityManager->flush();
}
}
}
}