src/Controller/RegistrationController.php line 189
<?phpnamespace App\Controller;use App\Entity\EmailType;use App\Entity\User;use App\Entity\UserDetail;use App\Entity\UserImage;use App\Entity\UserImageType;use App\Entity\UserStatus;use App\Form\RegistrationFormType;use App\Repository\ImageMetadataRepository;use App\Repository\UserDetailRepository;use App\Repository\UserImageTypeRepository;use App\Repository\UserRepository;use App\Repository\UserStatusRepository;use App\Security\LoginFormAuthenticator;use App\Service\EmailService;use App\Service\Media\UserImageService;use Doctrine\DBAL\Exception\UniqueConstraintViolationException;use Doctrine\DBAL\Schema\Exception\UniqueConstraintDoesNotExist;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\Component\Security\Http\Authentication\UserAuthenticatorInterface;use Symfony\Contracts\Translation\TranslatorInterface;use App\Entity\ImageMetadata;use App\Form\UploadFormType;class RegistrationController extends AbstractController{private $emailService;private $userStatusRepository;private $userImageService;private $userImageTypeRepository;private $imageMetadataRepository;private $userRepository;private $userDetailRepository;public function __construct(EmailService $emailService,UserStatusRepository $userStatusRepository,UserImageTypeRepository $userImageTypeRepository,ImageMetadataRepository $imageMetadataRepository,UserImageService $userImageService,UserRepository $userRepository,UserDetailRepository $userDetailRepository){$this->emailService = $emailService;$this->userImageService = $userImageService;$this->imageMetadataRepository = $imageMetadataRepository;$this->userImageTypeRepository = $userImageTypeRepository;$this->userStatusRepository = $userStatusRepository;$this->userRepository = $userRepository;$this->userDetailRepository = $userDetailRepository;}#[Route('/register', name: 'app_register')]public function register(Request $request, UserPasswordHasherInterface $userPasswordHasher, UserAuthenticatorInterface $userAuthenticator, LoginFormAuthenticator $authenticator, EntityManagerInterface $entityManager): Response{$user = new User();$form = $this->createForm(RegistrationFormType::class, $user);$imageMetadata = new ImageMetadata();$uploadForm = $this->createForm(UploadFormType::class,$imageMetadata, ['method' => 'POST']);$form->handleRequest($request);//if ($form->isSubmitted() && $form->isValid()) {if ($form->isSubmitted()) {try {// encode the plain password$user->setPassword($userPasswordHasher->hashPassword($user,$form->get('plainPassword')->getData()));// Extra parameters to save on user$paymentRequiredStatus = $this->userStatusRepository->find(UserStatus::STATUS_PAYMENT_AND_IDENTITY_REQUIRED);$user->setUserStatus($paymentRequiredStatus); // by default user will be in payment required status$user->setGender($form->get('gender')->getData());$user->setCreatedAt(new \DateTime('now'));$entityManager->persist($user);$entityManager->flush();} catch ( UniqueConstraintViolationException $e){$this->addFlash('notice', 'Looks like you have already registered with this email '. $form->get('email')->getData());return $this->redirectToRoute('app_register', [], 301);}if($request->request->get('imageMetadata')){$imageMetadata = $this->imageMetadataRepository->find($request->request->get('imageMetadata'));$userImageType = $this->userImageTypeRepository->find(UserImageType::LOGO);$this->userImageService->save($imageMetadata, $userImageType, $user);}/*$mediaType = null;if($request->request->get('metadataFront')){$imageMetadata = $this->imageMetadataRepository->find($request->request->get('metadataFront'));$mediaType = ($request->request->get('mediaType') =='PF' || $request->request->get('mediaType') =='PB') ? UserImageType::PASSPORT_FRONT : UserImageType::CITIZEN_FRONT;$userImageType = $this->userImageTypeRepository->find($mediaType);$this->userImageService->save($imageMetadata, $userImageType, $user);}if($request->request->get('metadataBack')){$imageMetadata = $this->imageMetadataRepository->find($request->request->get('metadataBack'));$mediaType = ($request->request->get('mediaType') =='PF' || $request->request->get('mediaType') =='PB') ? UserImageType::PASSPORT_BACK : UserImageType::CITIZEN_BACK;$userImageType = $this->userImageTypeRepository->find($mediaType);$this->userImageService->save($imageMetadata, $userImageType, $user);}*//*$identificationType = null;if (!is_null($mediaType)){$identificationType == ($mediaType == UserImageType::PASSPORT_FRONT || $mediaType == UserImageType::PASSPORT_BACK) ? 'passport':'citizen';$user->getUserDetail()->setIdentificationType($identificationType);}if($request->request->get('identificationNumber')){$user->getUserDetail()->setIdentificationNumber($request->request->get('identificationNumber'));}$user->getUserDetail()->setUpdatedBy($user->getId());$this->userRepository->save($user, true); */// do anything else you need here, like send an email// if ($user){// $responseData = ['message' => 'Registration successfully.', 'status' =>'success','user'=> $user];// $jsonResponse = json_encode($responseData);// return new Response($jsonResponse);// } else {// $responseData = ['message' => 'Registration Failed.', 'status' =>'false'];// $jsonResponse = json_encode($responseData);// return new Response($jsonResponse);// }$userDetail = $user->getUserDetail();if (is_null($userDetail)){$userDetail = new UserDetail();}if(!is_null($form->get('houseNumber')->getData())){$userDetail->setHouseNumber($form->get('houseNumber')->getData());}if(! is_null($form->get('street')->getData())){$userDetail->setStreet($form->get('street')->getData());}if(!is_null($form->get('postCode')->getData())){$userDetail->setPostCode($form->get('postCode')->getData());}$userDetail->setUpdatedBy($user->getId());$userDetail->setUser($user);$this->userDetailRepository->save($userDetail, true);$user->setUserDetail($userDetail);$this->userRepository->save($user, true);$emailType = $this->emailService->getEmailTypeEntityByEmailTypeCode(EmailType::WELCOME);$this->emailService->send($user,$user->getEmail(),"Thank you for the registration.",$emailType,['user' => $user,'name' => $user->getFirstName(),],null // Sent by System);return $userAuthenticator->authenticateUser($user,$authenticator,$request);}return $this->render('registration/register.html.twig', ['registrationForm' => $form->createView(),'uploadForm' => $uploadForm->createView()]);}}