src/Controller/SignupController.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Api\BrcBackend\BrcClient;
  4. use App\Api\BrcBackend\DTO\Signup\RegularSignup;
  5. use App\Api\BrcBackend\Exception\BadRequestException;
  6. use App\Form\RegularSignupType;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\Form\FormError;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. /**
  14.  * @Route("/signup")
  15.  */
  16. final class SignupController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("", name="signup", methods={"GET", "POST"})
  20.      *
  21.      * @param Request $request
  22.      * @param BrcClient $brcClient
  23.      * @param TranslatorInterface $translator
  24.      *
  25.      * @return Response
  26.      */
  27.     public function index(Request $requestBrcClient $brcClientTranslatorInterface $translator): Response
  28.     {
  29.         $dto = new RegularSignup();
  30.         $form $this->createForm(RegularSignupType::class, $dto);
  31.         $form->handleRequest($request);
  32.         if ($form->isSubmitted() && $form->isValid()) {
  33.             try {
  34.                 $dto->setCountry($this->getParameter('locale'));
  35.                 $brcClient->createSignup($dto);
  36.                 return $this->redirectToRoute('signup_success');
  37.             } catch (BadRequestException $ex) {
  38.                 $form->addError(new FormError($ex->getMessage()));
  39.             } catch (\Throwable $ex) {
  40.                 $form->addError(new FormError($translator->trans('signup.form.service_unavailable')));
  41.             }
  42.         }
  43.         return $this->render('signup/index.html.twig', [
  44.             'form' => $form->createView(),
  45.         ]);
  46.     }
  47.     /**
  48.      * @Route("/success", name="signup_success", methods={"GET"})
  49.      *
  50.      * @return Response
  51.      */
  52.     public function signupSuccess(): Response
  53.     {
  54.         return $this->render('signup/success.html.twig');
  55.     }
  56. }