<?php
declare(strict_types=1);
namespace App\EventListener\Questionary;
use App\Entity\QuestionaryAttempt;
use App\Event\Questionary\LessonPassedEvent;
use Doctrine\ORM\EntityManagerInterface;
class LessonPassedListener
{
private EntityManagerInterface $em;
public function __construct(
EntityManagerInterface $em
) {
$this->em = $em;
}
public function onLessonPassed(LessonPassedEvent $event): void
{
$lesson = $event->getLesson();
$learningProgramm = $event->getLearningProgramm();
if (null === $lesson || null === $learningProgramm || null === $lesson->getQuestionary()) {
return;
}
$student = $learningProgramm->getStudent();
if (null === $student) {
return;
}
$qAttempt = new QuestionaryAttempt();
$qAttempt->setLessonPassedHomeworkResult($event->getHomeworkResult());
$qAttempt->setLessonPassedLesson($event->getLesson());
$qAttempt->setStudent($student);
$qAttempt->setQuestionary($lesson->getQuestionary());
$qAttempt->setIsDone(false);
$qAttempt->setTitle($lesson->getTitle());
$this->em->persist($qAttempt);
$this->em->flush();
}
}