src/Controller/RegistrationController.php line 140

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author Mehrez Labidi
  5.  */
  6. namespace App\Controller;
  7. use App\Entity\Utilisateur;
  8. use App\Entity\UtilisateursNewsletter;
  9. use App\Form\RegistrationFormType;
  10. use App\Helper\TransProvider;
  11. use App\Helper\Utils;
  12. use App\Repository\UtilisateurRepository;
  13. use App\Security\AppCustomAuthenticator;
  14. use App\Security\EmailVerifier;
  15. use App\Services\Mailer;
  16. use App\Services\ManagerEntity\UtilisateursNewsletterManagers;
  17. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\Mime\Address;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  24. use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface;
  25. use App\Services\ManagerEntity\UtilisateursManagers;
  26. class RegistrationController extends AbstractController {
  27.     /**
  28.      * @var TransProvider
  29.      */
  30.     private $transProvider;
  31. //    private EmailVerifier $emailVerifier;
  32.     /**
  33.      * @var UtilisateursNewsletterManagers
  34.      */
  35.     private UtilisateursNewsletterManagers $utilisateursNewsletterManagers;
  36.     private UtilisateursManagers $UtilisateursManagers;
  37.     /**
  38.      * @param EmailVerifier $emailVerifier
  39.      */
  40.     public function __construct(EmailVerifier $emailVerifierUtilisateursNewsletterManagers $utilisateursNewsletterManagersTransProvider $transProviderUtilisateursManagers $utilisateursManagers) {
  41.         $this->emailVerifier $emailVerifier;
  42.         $this->utilisateursNewsletterManagers $utilisateursNewsletterManagers;
  43.         $this->transProvider $transProvider;
  44.         $this->UtilisateursManagers $utilisateursManagers;
  45.     }
  46.     /**
  47.      * @Route("/creation-compte{codePays}", name="app_register")
  48.      */
  49.     public function register(Request $requestUserPasswordEncoderInterface $userPasswordEncoderInterfaceAppCustomAuthenticator $authenticator): Response {
  50.         $user = new Utilisateur();
  51.         $form $this->createForm(RegistrationFormType::class, $user);
  52.         $form->handleRequest($request);
  53.         $formValid false;
  54.         if ($form->isSubmitted()) {
  55.             if ($form->isValid()) {
  56.                 $idTypeStructureInvestisseur $form->get("id_type_structure_investisseur")->getData();
  57.                 $idTypeStructureExpert $form->get("id_type_structure_expert")->getData();
  58.                 $idTypeStructure $idTypeStructureInvestisseur ?? $idTypeStructureExpert;
  59.                 $newsletters_internationals $form->get("newsletters_internationals")->getData();
  60.                 $newsletters_internationals = (!empty($newsletters_internationals)) ? "," implode(","$newsletters_internationals) : "";
  61.                 $typeUtilisateur $form->get("type_utilisateur")->getData();
  62.                 // encode the plain password
  63.                 $user->setPasswordEncryptedUtilisateur(
  64.                         $userPasswordEncoderInterface->encodePassword(
  65.                                 $user,
  66.                                 $form->get('plainPassword')->getData()
  67.                         )
  68.                 );
  69.                 $em $this->getDoctrine()->getManager();
  70.                 $user->id_type_structure $idTypeStructureExpert;
  71.                 $emailUtilisateur $form->get('email_utilisateur')->getData();
  72.                 $data = [
  73.                     "id_metier" => UtilisateursNewsletter::getIdMetierByTypeUtilisateurIdTypeStructure($typeUtilisateur$idTypeStructure),
  74.                     "id_pays" => $form->get("id_pays_utilisateur")->getData(),
  75.                     "id_region" => $form->get("id_region")->getData(),
  76.                     "demarchage_partenaire" => $form->get("provenance_notoriete_fusacq")->getData(),
  77.                     "newsletters_internationals" => $newsletters_internationals
  78.                 ];
  79.                 $data array_merge($data, (array) $form->getData());
  80.                 $oldUserId $this->getDoctrine()->getRepository(Utilisateur::class)->getIdUtilisateurProspectByMail($emailUtilisateur);
  81.                 if ($oldUserId) {
  82.                     $oldUser $this->getDoctrine()->getRepository(Utilisateur::class)->find($oldUserId);
  83.                     $oldUser->suivi $oldUser->_get("suivi") . "\n" "inscription de prospect depuis le formulaire d'inscription FUSACQ";
  84.                     foreach ($oldUser->getAttribute() as $column) { // mise à jour de l'ancien utilisateur avec ses nouvelles infos //
  85.                         if (($column != Utilisateur::USER_ID) && ($column != "suivi")) { // except id_utilisateur
  86.                             $oldUser->_set($column$user->_get($column)); // mise à jour de l'ancien utilisateur avec ses nouvelles infos //
  87.                         }
  88.                     }
  89.                     $this->utilisateursNewsletterManagers->inscriptionOrUpdateNewslettersApresInscriUtilisateur($emailUtilisateur$data);
  90.                     $oldUser->setIsVerified(true);
  91.                     // quelques mise à jour log de connexion old logique => fusacq choice
  92.                     $oldUser->mode_utilisateur Utilisateur::MODE_UTILISATEUR_INSCRIT;
  93.                     $oldUser->date_inscription_reelle Utils::getDateToDayFormatFUSACQ();
  94.                     $oldUser->plateforme_inscription "fusacq";
  95.                     $oldUser->inscription_validee Utilisateur::INSCRIPTION_VALIDE_OUI;
  96.                     $oldUser->mode_reglement_commerce "cb";
  97.                     $oldUser->login_utilisateur $oldUser->getId();
  98.                     $em->persist($oldUser);
  99.                     $em->flush();
  100.                 } else {
  101.                     $this->utilisateursNewsletterManagers->inscriptionOrUpdateNewslettersApresInscriUtilisateur($emailUtilisateur$data);
  102.                     //
  103.                     $user->setIsVerified(true);
  104.                     // quelques mise à jour log de connexion old logique => fusacq choice
  105.                     $user->mode_utilisateur Utilisateur::MODE_UTILISATEUR_INSCRIT;
  106.                     $user->date_inscription_reelle Utils::getDateToDayFormatFUSACQ();
  107.                     $user->inscription_validee Utilisateur::INSCRIPTION_VALIDE_OUI;
  108.                     $user->mode_reglement_commerce "cb";
  109.                     $user->plateforme_inscription "fusacq";
  110.                     $user->suivi "nouvelle inscription depuis le formulaire d'inscription FUSACQ";
  111.                     $em->persist($user);
  112.                     $em->flush();
  113.                 }
  114.                 $em->clear(); // Nettoyer après la transaction
  115.                 $this->addFlash('success'"Vous êtes maintenant inscrit sur FUSACQ !");
  116.                 $formValid true;
  117.             } else {
  118.                 $this->addFlash('error'"Certains champs sont vides ou invalides.");
  119.             }
  120.         }
  121.         return $this->render('registration/register.html.twig', [
  122.                     'registrationForm' => $form->createView(),
  123.                     "formValid" => $formValid
  124.         ]);
  125.     }
  126.     /**
  127.      * @param $var
  128.      * @return mixed|string
  129.      */
  130.     private function transChoice($var) {
  131.         if (is_string($var)) {
  132.             $var $this->transProvider
  133.                     ->translate($var"""M");
  134.         }
  135.         if (is_array($var)) {
  136.             foreach ($var as $key => $item) {
  137.                 unset($var[$key]);
  138.                 $key $this->transProvider
  139.                         ->translate($key"""M");
  140.                 $var[$key] = $item;
  141.             }
  142.         }
  143.         return $var;
  144.     }
  145.     /**
  146.      * @Route("/verify/email", name="app_verify_email")
  147.      */
  148. //    public function verifyUserEmail(Request $request, UtilisateurRepository $utilisateurRepository): Response {
  149. //        $id = $request->get('id');
  150. //        if (null === $id) {
  151. //            return $this->redirectToRoute('app_register');
  152. //        }
  153. //        $user = $utilisateurRepository->find($id);
  154. //        if (null === $user) {
  155. //            return $this->redirectToRoute('app_register');
  156. //        }
  157. //        // validate email confirmation link, sets User::isVerified=true and persists
  158. //        try {
  159. //            $this->emailVerifier->handleEmailConfirmation($request, $user);
  160. //        } catch (VerifyEmailExceptionInterface $exception) {
  161. //            $this->addFlash('verify_email_error', $exception->getReason());
  162. //            return $this->redirectToRoute('app_register');
  163. //        }
  164. ////        // @TODO Change the redirect on success and handle or remove the flash message in your templates
  165. ////        $this->addFlash('success', 'Your email address has been verified.');
  166. ////        return $this->redirectToRoute('app_register');
  167. //        // redirect after confirm email user
  168. //        $session = $request->getSession();
  169. //        $codePays = $session->get('codePays');
  170. //        if (!$codePays) {
  171. //            $codePays = strtolower($_COOKIE["codePays"]);
  172. //        }
  173. //        return $this->redirectToRoute('index', ['codePays' => Utils::codePaysWithoutDash($codePays)]);
  174. //    }
  175. }