<?php
namespace App\EventSubscriber;
use App\Events\UserMoveRankingCleverEvent;
use App\Repository\UserMoveRankingCleverRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class UserMoveRankingCleverSubscriber implements EventSubscriberInterface
{
private EntityManagerInterface $em;
private UserMoveRankingCleverRepository $er;
public function __construct(
EntityManagerInterface $em,
UserMoveRankingCleverRepository $er
) {
$this->em = $em;
$this->er = $er;
}
public static function getSubscribedEvents(): array
{
return [
UserMoveRankingCleverEvent::CREATED => 'onCreated',
];
}
public function onCreated(UserMoveRankingCleverEvent $event): void
{
$ranking = $event->getUserMoveRankingClever();
$user = $ranking->getUser();
$sum = $this->er->sumPointsBy($user);
$user->setNumPointsRankingClever($sum);
$sum = $this->er->sumSecondsBy($user);
$user->setNumSecondsRankingClever($sum);
$this->em->persist($user);
$this->em->flush();
}
}