<?php
namespace App\EventSubscriber;
use App\Entity\ElCourseJoin;
use App\Entity\ElTaskAttempt;
use Doctrine\ORM\EntityManagerInterface;
use App\Event\ElExamAttemptPostUpdateEvent;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ElExamAttemptSubscriber implements EventSubscriberInterface
{
public function __construct(
private EntityManagerInterface $_em,
private Security $security
) {}
public static function getSubscribedEvents(): array
{
return [
ElExamAttemptPostUpdateEvent::NAME => 'onPostUpdate'
];
}
public function onPostUpdate(ElExamAttemptPostUpdateEvent $event)
{
$object = $event->getObject();
$elCourse = $object->getElExam()->getElCourseAlways();
$this->_em->getRepository(ElCourseJoin::class)
->calculateCoursePorgress($elCourse, $object->getUser());
$elTask = $object->getElExam()->getElTask();
if ($elTask) {
$this->_em->getRepository(ElTaskAttempt::class)
->calculateTaskPorgress($elTask, $object->getUser());
}
}
}