<?php
declare(strict_types=1);
namespace App\EventListener\Questionary;
use App\Entity\QuestionaryAttempt;
use App\Event\Questionary\HomeworkDoneEvent;
use App\Repository\QuestionaryRepository;
use Doctrine\ORM\EntityManagerInterface;
class HomeworkDoneListener
{
private QuestionaryRepository $questionaryRepository;
private EntityManagerInterface $em;
public function __construct(QuestionaryRepository $questionaryRepository, EntityManagerInterface $em)
{
$this->questionaryRepository = $questionaryRepository;
$this->em = $em;
}
public function onHomeworkDone(HomeworkDoneEvent $event): void
{
$hwr = $event->getHomeworkResult();
if (null === $hwr) {
return;
}
$questionary = $this->questionaryRepository->findLastActiveByEvent(HomeworkDoneEvent::class);
if (null === $questionary) {
return;
}
$questionaryAttempt = new QuestionaryAttempt();
$questionaryAttempt->setStudent($event->getHomeworkResult()->getStudent());
$questionaryAttempt->setIsDone(false);
$questionaryAttempt->setQuestionary($questionary);
$questionaryAttempt->setTitle($event->getHomeworkResult()->getHomework()->getLesson()->getTitle());
$this->em->persist($questionaryAttempt);
$this->em->flush();
}
}