src/Controller/Adherent/Registration/RegistrationController.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Adherent\Registration;
  3. use App\Entity\Person;
  4. use App\Entity\Registration;
  5. use App\Security\Voter\PersonVoter;
  6. use App\Service\Mailer\Email\NewRegistration;
  7. use App\Service\Mailer\Email\NewUser;
  8. use App\Service\Mailer\MailerManager;
  9. use App\Service\Mailer\RegistrationMailManager;
  10. use App\Service\Registration\OrderManager;
  11. use Exception;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  17. #[Route(path'/inscription'name'registration_')]
  18. class RegistrationController extends AbstractRegistrationController
  19. {
  20.     #[Route(path'/dump'name'dump')]
  21.     public function dump()
  22.     {
  23.         $this->registrationSession->dump(true);
  24.     }
  25.     #[Route(name'home')]
  26.     public function home(): Response
  27.     {
  28.         return $this->redirectToRoute('registration_user');
  29.     }
  30.     #[Route(path'/reinitialiser'name'reset')]
  31.     public function reset(Request $requestTokenStorageInterface $tokenStorage): Response
  32.     {
  33.         $family $this->getUser()?->getPerson()?->getFamily();
  34.         $this->registrationSession->reset();
  35.         if ($family) {
  36.             return $this->redirectToRoute('dashboard');
  37.         }
  38.         return $this->redirectToRoute('registration_home');
  39.     }
  40.     #[Route(path'/nouvelle-inscription/{uuid}'name'existing_person')]
  41.     #[IsGranted(PersonVoter::EDIT'person')]
  42.     public function existingPerson(Person $person): Response
  43.     {
  44.         $this->registrationSession->reset();
  45.         $this->registrationSession
  46.             ->setFamily($person->getFamily())
  47.             ->setPerson($person)
  48.             ->setStep(3);
  49.         return $this->redirectToRoute('registration_person');
  50.     }
  51.     #[Route(path'/nouveau-membre'name'new_person')]
  52.     public function newPerson(): Response
  53.     {
  54.         $this->registrationSession->reset();
  55.         $this->registrationSession
  56.             ->setFamily($this->getUser()->getPerson()->getFamily())
  57.             ->setStep(3);
  58.         return $this->redirectToRoute('registration_person');
  59.     }
  60.     #[Route(path'/finalisation'name'finalize')]
  61.     public function finalize(Request $requestOrderManager $orderManagerMailerManager $mailer): Response
  62.     {
  63.         $step 9;
  64.         if ($step $this->registrationSession->getStep()) {
  65.             return $this->redirectToRoute('registration_user');
  66.         }
  67.         $season $this->registrationSession->getSeason();
  68.         $person $this->registrationSession->getPerson();
  69.         $user $this->getUser();
  70.         $registration = (new Registration())
  71.             ->setPerson($person)
  72.             ->setSeason($season);
  73.         if ($donation $this->registrationSession->getDonation()) {
  74.             $orderManager->updateDonation($registration$donation);
  75.         }
  76.         $this->em->persist($registration);
  77.         $isTemporary $user->isIsTemporary();
  78.         $user->setIsTemporary(false);
  79.         try {
  80.             $this->em->flush();
  81.             $recipients RegistrationMailManager::getRegistrationRecipients($registration);
  82.             foreach ($recipients as $recipient) {
  83.                 $email = new NewRegistration($registration$recipient);
  84.                 $mailer->sendEmail($email);
  85.             }
  86.             if ($isTemporary) {
  87.                 $email = new NewUser($user);
  88.                 $mailer->sendEmail($email);
  89.             }
  90.         } catch (Exception $e) {
  91.             $message "Une erreur s'est produite lors de l'enregistrement de votre inscription. Merci de bien vouloir réessayer";
  92.             $request->getSession()->getFlashBag()->add('error'$message);
  93.             return $this->redirectToRoute('registration_user_validation');
  94.         }
  95.         $this->registrationSession->reset();
  96.         return $this->redirectToRoute('dashboard');
  97.     }
  98. }