src/Controller/RegistrationController.php line 47
<?phpnamespace App\Controller;use App\Entity\User;use App\Form\RegistrationFormType;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Symfony\Component\Routing\Annotation\Route;use Symfony\Contracts\Translation\TranslatorInterface;use App\Repository\SettingsRepository;use Symfony\Component\Serializer\Encoder\JsonEncoder;use Symfony\Component\Serializer\Encoder\XmlEncoder;use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;use Symfony\Component\Serializer\Serializer;use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;use App\Repository\UserRepository;use Doctrine\DBAL\Types\TimeImmutableType;use Symfony\Contracts\HttpClient\HttpClientInterface;use App\Repository\ProjectRepository;use Symfony\Bridge\Twig\Mime\TemplatedEmail;use Symfony\Component\Mime\Address;use Symfony\Component\Mailer\MailerInterface;use Symfony\Bundle\SecurityBundle\Security;use App\Repository\OrganizationRepository;use App\Repository\ProvinceRepository;class RegistrationController extends AbstractController{private $settings;private $entityManager;private $projectgRepo;private $organizationRepo;private $provinceRepo;private $userRepo;private $encoders;private $normalizers;private $serializer;private $client;private $projects;private $mailer;public function __construct(SettingsRepository $settingsRepository,EntityManagerInterface $entityManager,UserRepository $userRepository,ProjectRepository $projectRepository,OrganizationRepository $organizationRepository,ProvinceRepository $provinceRepository,MailerInterface $mailer){$this->settings = $settingsRepository->findOneById(1);$this->entityManager = $entityManager;$this->userRepo = $userRepository;$this->projectgRepo = $projectRepository;$this->encoders = [new XmlEncoder(), new JsonEncoder()];$this->normalizers = [new DateTimeNormalizer(), new ObjectNormalizer()];$this->serializer = new Serializer($this->normalizers, $this->encoders);$this->organizationRepo = $organizationRepository;$this->provinceRepo = $provinceRepository;// $this->client = $client;$this->projects = $projectRepository->findAll();$this->mailer = $mailer;}#[Route('/organizations-list')]public function organizationsList(Request $request){$provinceId = $request->query->get('provinceId');$province = $this->provinceRepo->findOneById($provinceId);$organizations = $this->organizationRepo->findByProvince($province);$jsonOrganizations = $this->serializer->serialize($organizations,'json',[AbstractNormalizer::IGNORED_ATTRIBUTES => ['author','users','videoAuthorOrganizations','organizations','province','video']]);return new Response(json_encode(['organizations' => $jsonOrganizations,]),Response::HTTP_OK,['content-type' => 'application/json']);}#[Route('/register', name: 'app_register')]public function register(Request $request,UserPasswordHasherInterface $userPasswordHasher,Security $security): Response{$user = new User();$form = $this->createForm(RegistrationFormType::class, $user);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {// encode the plain password$user->setPassword($userPasswordHasher->hashPassword($user,$form->get('plainPassword')->getData()))->setCreatedAt(new \DateTimeImmutable('now'))->setLastAccessAt(new \DateTimeImmutable('now'));$this->entityManager->persist($user);$this->entityManager->flush();// do anything else you need here, like send an email$email = (new TemplatedEmail())->from(new Address($this->settings->getContactEmail(), strip_tags($this->settings->getTitle())))->to(new Address($user->getEmail()))->subject('Bienvenid@ a '.strip_tags($this->settings->getTitle()))->htmlTemplate('emails/signup.html.twig')->context(['user' => $user,'settings' => $this->settings,]);$this->mailer->send($email);$security->login($user, 'form_login');return $this->redirectToRoute('app_home');}$specialtyChoices = ['Nefrología' => 'Nefrología','Hepatología' => 'Hepatología','Cirugía Hepatobiliar' => 'Cirugía Hepatobiliar','Inmunología' => 'Inmunología','Farmacia Hospitalaria' => 'Farmacia Hospitalaria','Enfermería' => 'Enfermería','UCI' => 'UCI',// 'Otro' => 'Otro',];return $this->render('registration/register.html.twig', ['registrationForm' => $form->createView(),'settings' => $this->settings,'specialtyChoices' => $specialtyChoices,]);}}