<?php
namespace App\Controller;
use App\Api\BrcBackend\BrcClient;
use App\Api\BrcBackend\DTO\Signup\RegularSignup;
use App\Api\BrcBackend\Exception\BadRequestException;
use App\Form\RegularSignupType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormError;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* @Route("/signup")
*/
final class SignupController extends AbstractController
{
/**
* @Route("", name="signup", methods={"GET", "POST"})
*
* @param Request $request
* @param BrcClient $brcClient
* @param TranslatorInterface $translator
*
* @return Response
*/
public function index(Request $request, BrcClient $brcClient, TranslatorInterface $translator): Response
{
$dto = new RegularSignup();
$form = $this->createForm(RegularSignupType::class, $dto);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$dto->setCountry($this->getParameter('locale'));
$brcClient->createSignup($dto);
return $this->redirectToRoute('signup_success');
} catch (BadRequestException $ex) {
$form->addError(new FormError($ex->getMessage()));
} catch (\Throwable $ex) {
$form->addError(new FormError($translator->trans('signup.form.service_unavailable')));
}
}
return $this->render('signup/index.html.twig', [
'form' => $form->createView(),
]);
}
/**
* @Route("/success", name="signup_success", methods={"GET"})
*
* @return Response
*/
public function signupSuccess(): Response
{
return $this->render('signup/success.html.twig');
}
}