src/EventListener/Questionary/CuratorAnsweredSupportListener.php line 25

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\CuratorAnsweredSupportEvent;
  6. use App\Repository\QuestionaryRepository;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. class CuratorAnsweredSupportListener
  9. {
  10.     private QuestionaryRepository $questionaryRepository;
  11.     private EntityManagerInterface $em;
  12.     public function __construct(
  13.         QuestionaryRepository $questionaryRepository,
  14.         EntityManagerInterface $em
  15.     ) {
  16.         $this->questionaryRepository $questionaryRepository;
  17.         $this->em $em;
  18.     }
  19.     public function onCuratorAnsweredSupport(CuratorAnsweredSupportEvent $event): void
  20.     {
  21.         $hq $event->getHelpQuestion();
  22.         $questionary $this->questionaryRepository->findLastActiveByEvent(CuratorAnsweredSupportEvent::class);
  23.         if (true === $hq->getQuestionarySent() || null === $questionary) {
  24.             return;
  25.         }
  26.         $qAttempt = new QuestionaryAttempt();
  27.         $qAttempt->setTitle($hq->getTitle());
  28.         $qAttempt->setStudent($hq->getStudent());
  29.         $qAttempt->setQuestionary($questionary);
  30.         $qAttempt->setIsDone(false);
  31.         $qAttempt->setCuratorAnsweredQuestion($hq->getDuty()->getDutyUser());
  32.         $qAttempt->setHelpQuestion($hq);
  33.         $hq->setQuestionarySent(true);
  34.         $hq->setQuestionary($questionary);
  35.         $this->em->persist($qAttempt);
  36.         $this->em->persist($hq);
  37.         $this->em->flush();
  38.     }
  39. }