<?php
declare(strict_types=1);
namespace App\EventListener\Questionary;
use App\Entity\QuestionaryAttempt;
use App\Event\Questionary\CuratorAnsweredSupportEvent;
use App\Repository\QuestionaryRepository;
use Doctrine\ORM\EntityManagerInterface;
class CuratorAnsweredSupportListener
{
private QuestionaryRepository $questionaryRepository;
private EntityManagerInterface $em;
public function __construct(
QuestionaryRepository $questionaryRepository,
EntityManagerInterface $em
) {
$this->questionaryRepository = $questionaryRepository;
$this->em = $em;
}
public function onCuratorAnsweredSupport(CuratorAnsweredSupportEvent $event): void
{
$hq = $event->getHelpQuestion();
$questionary = $this->questionaryRepository->findLastActiveByEvent(CuratorAnsweredSupportEvent::class);
if (true === $hq->getQuestionarySent() || null === $questionary) {
return;
}
$qAttempt = new QuestionaryAttempt();
$qAttempt->setTitle($hq->getTitle());
$qAttempt->setStudent($hq->getStudent());
$qAttempt->setQuestionary($questionary);
$qAttempt->setIsDone(false);
$qAttempt->setCuratorAnsweredQuestion($hq->getDuty()->getDutyUser());
$qAttempt->setHelpQuestion($hq);
$hq->setQuestionarySent(true);
$hq->setQuestionary($questionary);
$this->em->persist($qAttempt);
$this->em->persist($hq);
$this->em->flush();
}
}