<?php
namespace Aqarmap\Bundle\DiscussionBundle\EventListener;
use Aqarmap\Bundle\DiscussionBundle\Event\CommentEvent;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class DiscussionSubscriberListener implements EventSubscriberInterface
{
private EntityManagerInterface $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function updateCommentsCount(CommentEvent $event): void
{
$discussion = $event->getDiscussion();
$comments = $discussion->getComments()->getValues();
$discussion->setCommentsCounter(\count($comments));
$this->entityManager->persist($discussion);
$this->entityManager->flush();
}
public static function getSubscribedEvents(): array
{
return [
'aqarmap.discussion.subscriber.update_comments_counter' => ['updateCommentsCount'],
];
}
}