<?php
declare(strict_types=1);
namespace App\EventListener\Questionary;
use App\DBAL\Types\RoleEnumType;
use App\Entity\QuestionaryAttempt;
use App\Event\Questionary\SendToCuratorEvent;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
class SendToCuratorEventListener
{
private UserRepository $userRepository;
private EntityManagerInterface $em;
public function __construct(
UserRepository $userRepository,
EntityManagerInterface $em
) {
$this->userRepository = $userRepository;
$this->em = $em;
}
public function onCuratorSend(SendToCuratorEvent $event): void
{
$users = $this->userRepository->findUsersWithRole(RoleEnumType::ROLE_CURATOR);
foreach ($users as $user) {
$qAttempt = new QuestionaryAttempt();
$qAttempt->setStudent($user);
$qAttempt->setQuestionary($event->getQuestionary());
$qAttempt->setIsDone(false);
$qAttempt->setTitle($event->getQuestionary()->getTitle());
$this->em->persist($qAttempt);
}
$this->em->flush();
}
}