src/EventListener/Questionary/HomeworkDoneListener.php line 23

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener\Questionary;
  4. use App\Entity\QuestionaryAttempt;
  5. use App\Event\Questionary\HomeworkDoneEvent;
  6. use App\Repository\QuestionaryRepository;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. class HomeworkDoneListener
  9. {
  10.     private QuestionaryRepository $questionaryRepository;
  11.     private EntityManagerInterface $em;
  12.     public function __construct(QuestionaryRepository $questionaryRepositoryEntityManagerInterface $em)
  13.     {
  14.         $this->questionaryRepository $questionaryRepository;
  15.         $this->em $em;
  16.     }
  17.     public function onHomeworkDone(HomeworkDoneEvent $event): void
  18.     {
  19.         $hwr $event->getHomeworkResult();
  20.         if (null === $hwr) {
  21.             return;
  22.         }
  23.         $questionary $this->questionaryRepository->findLastActiveByEvent(HomeworkDoneEvent::class);
  24.         if (null === $questionary) {
  25.             return;
  26.         }
  27.         $questionaryAttempt = new QuestionaryAttempt();
  28.         $questionaryAttempt->setStudent($event->getHomeworkResult()->getStudent());
  29.         $questionaryAttempt->setIsDone(false);
  30.         $questionaryAttempt->setQuestionary($questionary);
  31.         $questionaryAttempt->setTitle($event->getHomeworkResult()->getHomework()->getLesson()->getTitle());
  32.         $this->em->persist($questionaryAttempt);
  33.         $this->em->flush();
  34.     }
  35. }