src/Controller/GestioneUtentiController.php line 38

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Destinazioni;
  4. use App\Entity\MailSecondarieUtenti;
  5. use App\Entity\Nazioni;
  6. use App\Entity\User;
  7. use App\Entity\UserCampiCustomTestata;
  8. use App\Entity\UserCampiCustomValori;
  9. use App\Model\Costanti;
  10. use App\Model\GestioneUtenti;
  11. use App\Model\Mailer;
  12. use App\Model\Security\ReCaptchaGoogle;
  13. use App\Model\Translating\Translating;
  14. use DoctrineExtensions\Query\Postgresql\Date;
  15. use Psr\Log\LoggerInterface;
  16. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  17. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  18. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  19. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  20. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  21. use Symfony\Component\Form\Extension\Core\Type\TextType;
  22. use Symfony\Component\HttpFoundation\JsonResponse;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\RequestStack;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  27. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  28. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  29. use Symfony\Component\Routing\Annotation\Route;
  30. use Symfony\Component\Routing\Generator\UrlGenerator;
  31. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  32. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  33. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  34. use Twig\Environment;
  35. class GestioneUtentiController extends AbstractController
  36. {
  37.     /** @var ReturnImpostazioniServiceController */
  38.     private $imp;
  39.     /** @var ServiziController */
  40.     private $servizi;
  41.     /** @var LoggerInterface */
  42.     private $logger;
  43.     /** @var Translating */
  44.     private $translating;
  45.     /** @var Mailer */
  46.     private $mailer;
  47.     /** @var UserPasswordHasherInterface */
  48.     private $passwordHasher;
  49.     /** @var Environment */
  50.     private $twig;
  51.     /** @var TokenStorageInterface */
  52.     private $token;
  53.     /** @var SessionInterface */
  54.     private $session;
  55.     /** @var GestioneUtenti */
  56.     private $gestioneUtenti;
  57.     /*
  58.      * @Route("/login", name="home_login")
  59.      * @Route("/looogin", name="home_loogin")
  60.     public function loginAction(Request $request, ServiziController $servizi, ReturnImpostazioniServiceController $imp, AuthenticationUtils $authenticationUtils)
  61.     {
  62.         // replace this example code with whatever you need
  63.         $user = $this->servizi->OttieniUtenteCorrente();
  64.         if ($user) {
  65.             $url = $servizi->getRefererRoute($request);
  66.             if ($url){
  67.                 return $this->redirect($url);
  68.             }else{
  69.                 return $this->redirectToRoute('homepage');
  70.             }
  71.         } else {
  72.             $appId = $imp->ritornaImpostazioneDaNome("FacebookAppId");
  73.             $appSecret = $imp->ritornaImpostazioneDaNome("FacebookAppSecret");
  74.             $googleAppId = $imp->ritornaImpostazioneDaNome("GoogleClientId");
  75.             $googleAppSecret = $imp->ritornaImpostazioneDaNome("GoogleClientSecret");
  76.             $googleAppName = $imp->ritornaImpostazioneDaNome("GoogleClientAppName");
  77.             $loginUrl = '';
  78.             if ($appId != "" && $appSecret != "") {
  79.                 $fb = new \Facebook\Facebook([
  80.                     "app_id" => $appId,
  81.                     "app_secret" => $appSecret
  82.                 ]);
  83.                 $helper = $fb->getRedirectLoginHelper();// to set redirection url
  84.                 $permissions = ["email", "birthday", "name", "last_name", "id", "first_name"];// set required permissions to user details
  85.                 $loginUrl = $helper->getLoginUrl($this->generateUrl('facebook_login'), $permissions);
  86.             }
  87.             $googleLoginUrl = '';
  88.             if ($googleAppId != '' && $googleAppName != '' && $googleAppSecret != '') {
  89.                 $client = new \Google_Client();
  90.                 $client->setApplicationName($googleAppName);// to set app name
  91.                 $client->setClientId($googleAppId);// to set app id or client id
  92.                 $client->setClientSecret($googleAppSecret);// to set app secret or client secret
  93.                 $client->setRedirectUri($this->generateUrl('google_login'));// to set redirect uri
  94.                 //$client->setHostedDomain("your hosted domain");// to set hosted domain (optional)
  95.                 $url = $client->createAuthUrl();// to get login url
  96.                 $googleLoginUrl = $url;
  97.             }
  98.             return $this->render('clienti/login_primary.html.twig', array(
  99.                 'login_no_ordine' => true,
  100.                 'fb_login_url' => $loginUrl,
  101.                 'google_login_url' => $googleLoginUrl,
  102.                 'error' => $authenticationUtils->getLastAuthenticationError(),
  103.                 'last_username' => $authenticationUtils->getla
  104.             ));
  105.         }
  106.     }*/
  107.     /**
  108.      * GestioneUtentiController constructor.
  109.      * @param ReturnImpostazioniServiceController $imp
  110.      * @param ServiziController $servizi
  111.      * @param LoggerInterface $logger
  112.      * @param Translating $translating
  113.      * @param Mailer $mailer
  114.      * @param UserPasswordHasherInterface $passwordHasher
  115.      * @param Environment $twig
  116.      * @param TokenStorageInterface $token
  117.      * @param RequestStack $requestStack
  118.      * @param GestioneUtenti $gestioneUtenti
  119.      */
  120.     public function __construct(ReturnImpostazioniServiceController $impServiziController $serviziLoggerInterface $loggerTranslating $translatingMailer $mailerUserPasswordHasherInterface $passwordHasherEnvironment $twigTokenStorageInterface $tokenRequestStack $requestStackGestioneUtenti $gestioneUtenti)
  121.     {
  122.         $this->imp $imp;
  123.         $this->servizi $servizi;
  124.         $this->logger $logger;
  125.         $this->translating $translating;
  126.         $this->mailer $mailer;
  127.         $this->passwordHasher $passwordHasher;
  128.         $this->twig $twig;
  129.         $this->token $token;
  130.         $this->session $requestStack->getSession();
  131.         $this->gestioneUtenti $gestioneUtenti;
  132.     }
  133.     /**
  134.      * @Route("/agente/altroDato/{operazione}", name="agente_altro_dato", defaults={"operazione" = "V"}, options={"expose"=true})
  135.      * @Route("/altroDato/{operazione}", name="utente_altro_dato", defaults={"operazione" = "V"}, options={"expose"=true})
  136.      */
  137.     public function modificaEliminaAltroDatoUtente(Request $request$operazione)
  138.     {
  139.         //OPERAZIONI ( V=Visualizza, E=Elimina, M=Modifica )
  140.         /** @var User $user */
  141.         $user $this->servizi->OttieniUtenteCorrente();
  142.         $em $this->servizi->doctrine->getManager();
  143.         if ($user){
  144.             switch ($operazione){
  145.                 case "V":{
  146.                     return new JsonResponse($user->getAltriDati());
  147.                     break;
  148.                 }
  149.                 case "M":{
  150.                     $valore $request->get('valore');
  151.                     $user->setAltriDati($valore);
  152.                     $em->persist($user);
  153.                     $em->flush();
  154.                     return new JsonResponse(array('esito' => 'OK'));
  155.                     break;
  156.                 }
  157.                 case "E":{
  158.                     $user->setAltriDati(null);
  159.                     $em->persist($user);
  160.                     $em->flush();
  161.                     return new JsonResponse(array('esito' => 'OK'));
  162.                     break;
  163.                 }
  164.                 default:{
  165.                     return new JsonResponse(array('esito' => 'NO''msg' => 'ERRORE OPERAZIONE NON RICONOSCIUTA'));
  166.                     break;
  167.                 }
  168.             }
  169.         }
  170.         return new Response('');
  171.     }
  172.     /**
  173.      * @Route("/profile/change-password", name="profile_change_password")
  174.      */
  175.     public function changePasswordAction(Request $request)
  176.     {
  177.         /** @var User $user */
  178.         $user $this->servizi->OttieniUtenteCorrente();
  179.         if ($user){
  180.             $trans $this->translating;
  181.             $trans->CaricaTraduzioniDaFamiglia('modifica_utente'$request->getLocale());
  182.             $form $this->createFormBuilder()
  183.                 ->add(Costanti::CP_PASSWORD_CORRENTEPasswordType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('modifica_utente_password_corrente''modifica_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  184.                 ->add(Costanti::CP_PASSWORD_NUOVAPasswordType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('modifica_utente_nuova_password''modifica_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  185.                 ->add(Costanti::CP_PASSWORD_NUOVA_RIPETIPasswordType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('modifica_utente_ripeti_password''modifica_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  186.                 ->add(Costanti::CP_CONFERMASubmitType::class, array('label' => $trans->OttieniElementoDizionario('modifica_utente_cambia_password_btn''modifica_utente')->valoreUscita'attr' => array('class' => 'btn btn-sm btn-success''style' => 'margin-top:5px;')))
  187.                 ->getForm();
  188.             $form->handleRequest($request);
  189.             $errori_validazione = array();
  190.             if ($form->isSubmitted() && $form->isValid()){
  191.                 foreach ($form as $key => $value)
  192.                 {
  193.                     if ($form[$key]->getData() == "" &&
  194.                         ($key == Costanti::CP_PASSWORD_CORRENTE || $key == Costanti::CP_PASSWORD_NUOVA || $key == Costanti::CP_PASSWORD_NUOVA_RIPETI))
  195.                     {
  196.                         array_push($errori_validazione$key);
  197.                     }
  198.                 }
  199.                 if (count($errori_validazione) <= 0) {
  200.                     if ($form[Costanti::CP_PASSWORD_NUOVA]->getData() == $form[Costanti::CP_PASSWORD_NUOVA_RIPETI]->getData()){
  201.                         if ($this->validUser($user->getUsername(), $form[Costanti::CP_PASSWORD_NUOVA]->getData())) {
  202.                             $user->setPassword($this->passwordHasher->hashPassword($user$form[Costanti::CP_PASSWORD_NUOVA]->getData()));
  203.                             $em $this->servizi->doctrine->getManager();
  204.                             $em->persist($user);
  205.                             $em->flush();
  206.                             $mailer $this->mailer;
  207.                             $mailSecondari $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class)->findBy(array('inviaConfermaOrdine' => true'utente' => $user));
  208.                             $adresses = array();
  209.                             foreach ($mailSecondari as $item){
  210.                                 array_push($adresses$item->getIndirizzoMail());
  211.                             }
  212.                             $mailFrom $this->imp->caricaCacheImpostazioniDaFamiglie('IndirizzoMailFromInvioComunicazioni');
  213.                             //INVIO MAIL A CLIENTE
  214.                             $mailer->SendMail(
  215.                                 $trans->OttieniElementoDizionario('modifica_utente_cambia_password_btn''modifica_utente')->valoreUscita,
  216.                                 $this->renderView(
  217.                                     'email/utenti/cambio_password.html.twig',
  218.                                     array(
  219.                                         'utente' => $user,
  220.                                     )
  221.                                 ),
  222.                                 $user->getUsername(),
  223.                                 $adresses,
  224.                                 $mailFrom,
  225.                                 "text/html");
  226.                             $this->addFlash(
  227.                                 'notice',
  228.                                 $trans->OttieniElementoDizionario('modifica_utente_cambia_password_cambio_effettuto_flash''modifica_utente')->valoreUscita
  229.                             );
  230.                             $url $this->servizi->getRefererRoute($request);
  231.                             if ($url){
  232.                                 return $this->redirect($url);
  233.                             }else{
  234.                                 return $this->redirectToRoute('homepage');
  235.                             }
  236.                         }else{
  237.                             $this->addFlash(
  238.                                 'error',
  239.                                 $trans->OttieniElementoDizionario('modifica_utente_cambia_password_vecchia_psw_errata_msg''modifica_utente')->valoreUscita
  240.                             );
  241.                         }
  242.                     }else{
  243.                         $this->addFlash(
  244.                             'error',
  245.                             $trans->OttieniElementoDizionario('modifica_utente_cambia_password_non_coincidono_msg''modifica_utente')->valoreUscita
  246.                         );
  247.                     }
  248.                 }
  249.             }
  250.             return $this->render('ZZ_front_end/utente/modifica_password.html.twig', array(
  251.                 Costanti::PGU_UTENTE => $user,
  252.                 Costanti::CP_RADICE_FORM => $form->createView()
  253.             ));
  254.         }else{
  255.             return $this->redirectToRoute('home_login');
  256.         }
  257.     }
  258.     /**
  259.      * @param $username
  260.      * @param $password
  261.      * @return bool
  262.      */
  263.     public function validUser($username$password){
  264.         $user $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('username' => $username));
  265.         $bool $this->passwordHasher->isPasswordValid($user->getPassword(),$password);
  266.         return $bool;
  267.     }
  268.     /**
  269.      * @Route("/profile/change-mail", name="home_register")
  270.      */
  271.     public function changeMailAction(Request $request)
  272.     {
  273.         /** @var User $user */
  274.         $user $this->servizi->OttieniUtenteCorrente();
  275.         if ($user){
  276.             $trans $this->translating;
  277.             $trans->CaricaTraduzioniDaFamiglia('modifica_utente'$request->getLocale());
  278.             $form $this->createFormBuilder()
  279.                 ->add(Costanti::CM_NUOVA_MAILEmailType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('modifica_utente_cambia_nuova_mail''modifica_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  280.                 ->add(Costanti::CM_APPLICASubmitType::class, array('label' => $trans->OttieniElementoDizionario('modifica_utente_cambia_mail_applica_btn''modifica_utente')->valoreUscita'attr' => array('class' => 'btn btn-sm btn-success''style' => 'margin-top:5px;')))
  281.                 ->getForm();
  282.             $form->handleRequest($request);
  283.             $errori_validazione = array();
  284.             if ($form->isSubmitted() && $form->isValid()) {
  285.                 foreach ($form as $key => $value) {
  286.                     if ($form[$key]->getData() == "" &&
  287.                         ($key == Costanti::CM_NUOVA_MAIL)) {
  288.                         array_push($errori_validazione$key);
  289.                     }
  290.                 }
  291.                 if (count($errori_validazione) <= 0) {
  292.                     $stessaMail $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('email' => strtolower($form[Costanti::CM_NUOVA_MAIL]->getData())));
  293.                     if (!$stessaMail){
  294.                         $user->setEmail($form[Costanti::CM_NUOVA_MAIL]->getData());
  295.                         $em $this->servizi->doctrine->getManager();
  296.                         $em->persist($user);
  297.                         $em->flush();
  298.                         $this->addFlash(
  299.                             'notice',
  300.                             $trans->OttieniElementoDizionario('modifica_utente_cambia_indirizzo_mail_successo''modifica_utente')->valoreUscita
  301.                         );
  302.                         $mailFrom $this->imp->ritornaImpostazioneDaNome('IndirizzoMailFromInvioComunicazioni');
  303.                         $mailer $this->mailer;
  304.                         //INVIO MAIL A CLIENTE
  305.                         $mailer->SendMail(
  306.                             $trans->OttieniElementoDizionario('modifica_utente_cambia_indirizzo_mail_oggetto_mail''modifica_utente')->valoreUscita,
  307.                             $this->renderView(
  308.                                 'email/utenti/cambio_mail.html.twig',
  309.                                 array(
  310.                                     'utente' => $user,
  311.                                 )
  312.                             ),
  313.                             $user->getEmail(),
  314.                             array(),
  315.                             $mailFrom,
  316.                             "text/html");
  317.                         $url $this->servizi->getRefererRoute($request);
  318.                         if ($url){
  319.                             return $this->redirect($url);
  320.                         }else{
  321.                             return $this->redirectToRoute('homepage');
  322.                         }
  323.                     }else{
  324.                         $this->addFlash(
  325.                             'error',
  326.                             $trans->OttieniElementoDizionario('modifica_utente_cambia_indirizzo_mail_errore_mail_presente''modifica_utente')->valoreUscita
  327.                         );
  328.                     }
  329.                 }
  330.             }
  331.             return $this->render('ZZ_front_end/utente/modifica_mail.html.twig', array(
  332.                 Costanti::PGU_UTENTE => $user,
  333.                 Costanti::CM_RADICE_FORM => $form->createView()
  334.             ));
  335.         }else{
  336.             return $this->redirectToRoute('home_login');
  337.         }
  338.     }
  339.     /**
  340.      * @Route("/user/forgot-password", name="password_dimenticata")
  341.      */
  342.     public function forgotPassword(Request $request)
  343.     {
  344.         $trans $this->translating;
  345.         $trans->CaricaTraduzioniDaFamiglia('password_dimenticata'$request->getLocale());
  346.         $form $this->createFormBuilder()
  347.             ->add(Costanti::PD_EMAILTextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('password_dimenticata_form_mail_o_username''password_dimenticata')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  348.             ->add(Costanti::PD_CONFERMA_BTNSubmitType::class, array('label' => $trans->OttieniElementoDizionario('password_dimenticata_conferma_button''password_dimenticata')->valoreUscita'attr' => array('class' => 'btn btn-primary''style' => 'margin-bottom:5px;')));
  349.         $form $form->getForm();
  350.         $form->handleRequest($request);
  351.         if($form->isSubmitted() && $form->isValid()) {
  352.             $email $form[Costanti::PD_EMAIL]->getData();
  353.             $user $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('email' => strtolower($email)));
  354.             if($user){
  355.                 $em $this->servizi->doctrine->getManager();
  356.                 $user->setDataRichiestaResetPassword(new \DateTime());
  357.                 $rnd $this->servizi->randomString(25);
  358.                 $user->setTokenResetPassword(md5($rnd));
  359.                 $em->persist($user);
  360.                 $em->flush();
  361.                 $this->translating->CaricaTraduzioniDaFamiglia('mail_password_dimenticata'$request->getLocale());
  362.                 $this->imp->caricaCacheImpostazioniDaFamiglie(array('Invio mail'));
  363.                 $mailFrom $this->imp->ritornaImpostazioneDaNome('IndirizzoMailFromInvioComunicazioni');
  364.                 $nomeShop $this->imp->ritornaImpostazioneDaNome('NomeShop');
  365.                 $this->mailer->SendMail(
  366.                     $nomeShop ' - ' $this->translating->OttieniElementoDizionario('mail_password_dimenticata_titolo''mail_password_dimenticata')->valoreUscita,
  367.                     $this->renderView(
  368.                         'email/utenti/password_dimenticata.html.twig',
  369.                         array(
  370.                             'utente' => $user,
  371.                             'linkResetPassword' => $this->generateUrl('password_dimenticata_nuova', array('user_id' => $user->getId(), 'token' => $rnd), UrlGenerator::ABSOLUTE_URL)
  372.                         )
  373.                     ),
  374.                     $user->getEmail(),
  375.                     array(),
  376.                     $mailFrom,
  377.                     "text/html"
  378.                 );
  379.             }
  380.             $this->addFlash(
  381.                 'notice',
  382.                 $trans->OttieniElementoDizionario('password_dimenticata_messaggio_controlla_mail''password_dimenticata')->valoreUscita
  383.             );
  384.         }
  385.         return $this->render('ZZ_front_end/utente/password_dimenticata.html.twig', array('form' => $form->createView()));
  386.     }
  387.     /**
  388.      * @Route("/user/forgot-password-nuova/{user_id}/{token}", name="password_dimenticata_nuova", defaults={"token"="", "user_id"=""})
  389.      */
  390.     public function forgotPasswordNuova(Request $request$user_id ""$token "")
  391.     {
  392.         $trans $this->translating;
  393.         $trans->CaricaTraduzioniDaFamiglia('password_dimenticata'$request->getLocale());
  394.         $trans->CaricaTraduzioniDaFamiglia('mail_password_dimenticata'$request->getLocale());
  395.         $user $this->servizi->doctrine->getRepository(User::class)->find($user_id);
  396.         $errore true;
  397.         if($user){
  398.             //Verifico il TOKEN passato
  399.             if($user->getTokenResetPassword() != '' and $user->getTokenResetPassword() != null && $user->getTokenResetPassword() == md5($token)){
  400.                 //Verifico se sono passati più di 5 min dalla data di reset
  401.                 $datarichiestaCon5Min $user->getDataRichiestaResetPassword();
  402.                 $datarichiestaCon5Min->add(new \DateInterval('PT' 'M'));
  403.                 $dataOraAttuale = new \DateTime();
  404.                 if($user->getDataRichiestaResetPassword() != null && $dataOraAttuale $datarichiestaCon5Min){
  405.                     $em $this->servizi->doctrine->getManager();
  406.                     $user->setTokenResetPassword(null);
  407.                     $user->setDataRichiestaResetPassword(null);
  408.                     $em->persist($user);
  409.                     $em->flush();
  410.                     //OK PROCEDO CON LA RICHIESTA DELLA PASSWORD
  411.                     $gestioneUtente = new GestioneUtenti($this->servizi->doctrine$this->mailer$this->imp$this->servizi->twig$this->translating$this->servizi$this->passwordHasher);
  412.                     $gestioneUtente->ResetPasswordUtente($user$requesttrue);
  413.                     $this->addFlash(
  414.                         'notice',
  415.                         $trans->OttieniElementoDizionario('password_dimenticata_reset_effettuato''mail_password_dimenticata')->valoreUscita
  416.                     );
  417.                     $errore false;
  418.                 }else{
  419.                     $this->servizi->ScriviRegistroAttivita(''''false"Reset non riuscito per richiesta scaduta"null);
  420.                     $this->logger->notice("Data richiesta scaduta!");
  421.                 }
  422.             }else{
  423.                 $this->logger->notice("Token di reset non corrispondente!");
  424.             }
  425.         }else{
  426.             $this->logger->notice("Utente non rilevato!");
  427.         }
  428.         if($errore){
  429.             $this->addFlash(
  430.                 'error',
  431.                 $trans->OttieniElementoDizionario('password_dimenticata_errore''password_dimenticata')->valoreUscita
  432.             );
  433.         }
  434.         //return $this->render('ZZ_front_end/utente/password_dimenticata.html.twig', []);
  435.         return $this->redirectToRoute('homepage');
  436.     }
  437.     /**
  438.      * @Route("/register", name="register")
  439.      */
  440.     public function registerAction(Request $request)
  441.     {
  442.         $abilita $this->imp->ritornaImpostazioneDaNome('AbilitaRegistrazioneAutonomaUtenti');
  443.         if (!$abilita || $abilita == '0'){
  444.             return $this->redirectToRoute('homepage');
  445.         }
  446.         $trans $this->translating;
  447.         $trans->CaricaTraduzioniDaFamiglia('dati_utente'$request->getLocale());
  448.         $form $this->createFormBuilder()
  449.             ->add(Costanti::RU_AZIENDA_O_PRIVATOChoiceType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_privato_o_azienda''dati_utente')->valoreUscita'expanded' => true'multiple' => false'choices' => array($trans->OttieniElementoDizionario('dati_utente_azienda''dati_utente')->valoreUscita => 'azienda'$trans->OttieniElementoDizionario('dati_utente_privato''dati_utente')->valoreUscita => 'privato'), 'attr' => array()))
  450.             ->add(Costanti::RU_RAGIONE_SOCIALETextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_ragione_sociale''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  451.             ->add(Costanti::RU_NOMETextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_nome''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  452.             ->add(Costanti::RU_COGNOMETextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_cognome''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  453.             ->add(Costanti::RU_CODICE_FISCALETextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_codice_fiscale''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  454.             ->add(Costanti::RU_PARTITA_IVATextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_partita_iva''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  455.             ->add(Costanti::RU_INDIRIZZOTextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_indirizzo''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  456.             ->add(Costanti::RU_CITTATextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_citta''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  457.             ->add(Costanti::RU_PROVINCIATextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_provincia''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  458.             ->add(Costanti::RU_CAPTextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_cap''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  459.             ->add(Costanti::RU_STATO,  EntityType::class, array('required' => true'class' => Nazioni::class, 'choice_label' => function ($nazione) {
  460.                 /** @var $nazione Nazioni */
  461.                 return $nazione->getDescrizione();
  462.             }, 'label' => $trans->OttieniElementoDizionario('dati_utente_nazione''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))->add('telefono'TextType::class, array('required' => false'label' => "Telefono"'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  463.             ->add(Costanti::RU_TELEFONOTextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_cellulare''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  464.             ->add(Costanti::RU_FAXTextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_fax''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  465.             ->add(Costanti::RU_INDIRIZZO_MAILEmailType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_email''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  466.             ->add(Costanti::RU_INDIRIZZO_PECEmailType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_indirizzo_pec''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  467.             ->add(Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICATextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_codice_destinatario_fattura_elettronica''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  468.             ->add(Costanti::RU_DD_RAGIONE_SOCIALETextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_ragione_sociale''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  469.             ->add(Costanti::RU_DD_INDIRIZZOTextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_indirizzo''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  470.             ->add(Costanti::RU_DD_CITTATextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_citta''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  471.             ->add(Costanti::RU_DD_PROVINCIATextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_provincia''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  472.             ->add(Costanti::RU_DD_CAPTextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_cap''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  473.             ->add(Costanti::RU_DD_TELEFONOTextType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_telefono''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  474.             ->add(Costanti::RU_DD_STATO,  EntityType::class, array('required' => false'class' => Nazioni::class, 'choice_label' => function ($nazione) {
  475.                 /** @var $nazione Nazioni */
  476.                 return $nazione->getDescrizione();
  477.             }, 'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_nazione''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))->add('telefono'TextType::class, array('required' => false'label' => "Telefono"'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  478.             ->add(Costanti::RU_DD_INDIRIZZO_MAILEmailType::class, array('required' => false'label' => $trans->OttieniElementoDizionario('dati_utente_destinazione_mail''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  479.             ->add(Costanti::RU_USERNAMETextType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_username''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  480.             ->add(Costanti::RU_PASSWORDPasswordType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_password''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  481.             ->add(Costanti::RU_RIPETI_PASSWORDPasswordType::class, array('required' => true'label' => $trans->OttieniElementoDizionario('dati_utente_ripeti_password''dati_utente')->valoreUscita'attr' => array('class' => "form-control input-sm"'style' => 'padding-left:5px;padding-right:5px;')))
  482.             ->add(Costanti::RU_REGISTRASubmitType::class, array('label' => $trans->OttieniElementoDizionario('dati_utente_registra_btn''dati_utente')->valoreUscita'attr' => array('class' => 'btn btn-primary''style' => 'margin-bottom:5px;')));
  483.         /** @var UserCampiCustomTestata[] $campiCustomUser */
  484.         $campiCustomUser $this->servizi->doctrine->getRepository(UserCampiCustomTestata::class)->findBy(array('luogoVisualizzazione' => 'registrazioneUtente'));
  485.         $chiaviCampiCustom = array();
  486.         foreach ($campiCustomUser as $tst) {
  487.             $chiaviCampiCustom array_merge($this->servizi->RitornaChiaviUserCampiCustom($tst), $chiaviCampiCustom);
  488.             $form $this->servizi->AggiungiChildAFormUserCampiCustom($tst$form);
  489.         }
  490.         $form $form->getForm();
  491.         $form->handleRequest($request);
  492.         if($form->isSubmitted() && $form->isValid()) {
  493.             $userRepo $this->servizi->doctrine->getRepository(User::class);
  494.             if (!$userRepo->findOneBy(array('email' => $form[Costanti::RU_INDIRIZZO_MAIL]->getData()))) {
  495.                 if (!$userRepo->findOneBy(array('username' => $form[Costanti::RU_USERNAME]->getData()))) {
  496.                     $gestioneUtenti $this->gestioneUtenti;
  497.                     $nuovoUtente $gestioneUtenti->CreaUtente(
  498.                         $form[Costanti::RU_RAGIONE_SOCIALE]->getData(),
  499.                         $form[Costanti::RU_NOME]->getData(),
  500.                         $form[Costanti::RU_COGNOME]->getData(),
  501.                         $form[Costanti::RU_INDIRIZZO_MAIL]->getData(),
  502.                         $form[Costanti::RU_INDIRIZZO]->getData(),
  503.                         $form[Costanti::RU_CITTA]->getData(),
  504.                         $form[Costanti::RU_CAP]->getData(),
  505.                         $form[Costanti::RU_PROVINCIA]->getData(),
  506.                         $form[Costanti::RU_STATO]->getData() ? ($form[Costanti::RU_STATO]->getData())->getDescrizione() : '',
  507.                         $form[Costanti::RU_TELEFONO]->getData(),
  508.                         $form[Costanti::RU_CODICE_FISCALE]->getData(),
  509.                         $form[Costanti::RU_PARTITA_IVA]->getData(),
  510.                         $form[Costanti::RU_PASSWORD]->getData(),
  511.                         $form[Costanti::RU_USERNAME]->getData(),
  512.                         $form[Costanti::RU_INDIRIZZO_PEC]->getData(),
  513.                         $form[Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICA]->getData(),
  514.                         $form[Costanti::RU_AZIENDA_O_PRIVATO]->getData() == "privato" true false,
  515.                         '',
  516.                         null,
  517.                         true
  518.                     );
  519.                     //Verifico se ci sono dei campi custom da inserire nel db
  520.                     if(count($chiaviCampiCustom) > 0) {
  521.                         $em $this->servizi->doctrine->getManager();
  522.                         foreach ($chiaviCampiCustom as $cmpCst) {
  523.                             $dettaglioCampoCustom $this->servizi->RitornaDettaglioUserCampiCustom($cmpCst);
  524.                             $campo $dettaglioCampoCustom->getCampo();
  525.                             if ($campo) {
  526.                                 if ($form[$cmpCst]->getData() != '') {
  527.                                     $campoCustom = new UserCampiCustomValori();
  528.                                     $campoCustom->setDataCreazione(new \DateTime());
  529.                                     $campoCustom->setDataModifica(new \DateTime());
  530.                                     $campoCustom->setUser($nuovoUtente);
  531.                                     $campoCustom->setTestata($dettaglioCampoCustom->getTestata());
  532.                                     $campoCustom->setCampo($dettaglioCampoCustom->getCampo());
  533.                                     $campoCustom->setUtenteModifica($this->servizi->OttieniUtenteCorrente());
  534.                                     $campoCustom->setTipoDato($dettaglioCampoCustom->getCampo()->getTipoDato());
  535.                                     $campoCustom->setTestoVisualizzato($dettaglioCampoCustom->getCampo()->getTestoVisualizzato());
  536.                                     $campoCustom->setValore($form[$cmpCst]->getData());
  537.                                     $em->persist($campoCustom);
  538.                                 }
  539.                             }
  540.                         }
  541.                         $em->flush();
  542.                     }
  543.                     $utenteOrdine $nuovoUtente//Setto l'utente dell'ordine con l'utente appena creato
  544.                     //effettuo automaticamente il login per il nuovo utente creato
  545.                     $token = new UsernamePasswordToken($nuovoUtentenull'main'$nuovoUtente->getRoles());
  546.                     $this->token->setToken($token);
  547.                     $this->session->set('_security_main'serialize($token));
  548.                     /** @var $destinazione Destinazioni */
  549.                     $destinazione null;
  550.                     //Aggiungo la destinazione base
  551.                     $destinazione $gestioneUtenti->CreaDestinazione($nuovoUtente$nuovoUtente->getRagioneSociale(), $nuovoUtente->getIndirizzo(), $nuovoUtente->getCitta(), $nuovoUtente->getProvincia(),
  552.                         $nuovoUtente->getCap(), $nuovoUtente->getTelefono(), $nuovoUtente->getNazione(), $nuovoUtente->getEmail());
  553.                     //Se inserita una destinazione diversa la inserisco
  554.                     if ($form[Costanti::RU_DD_RAGIONE_SOCIALE]->getData() != '') {
  555.                         $destinazione $gestioneUtenti->CreaDestinazione($nuovoUtente$form[Costanti::RU_DD_RAGIONE_SOCIALE]->getData(), $form[Costanti::RU_DD_INDIRIZZO]->getData(), $form[Costanti::RU_DD_CITTA]->getData(),
  556.                             $form[Costanti::RU_DD_PROVINCIA]->getData(), $form[Costanti::RU_DD_CAP]->getData(), $form[Costanti::RU_DD_TELEFONO]->getData(), ($form[Costanti::RU_DD_STATO]->getData() ? ($form[Costanti::RU_DD_STATO]->getData())->getDescrizione() : ''),
  557.                             $form[Costanti::RU_DD_INDIRIZZO_MAIL]->getData(), $form[Costanti::RU_DD_CITTA]->getData());
  558.                     }
  559.                     $this->addFlash(
  560.                         'notice',
  561.                         $trans->OttieniElementoDizionario('dati_utente_registrazione_effettuata''dati_utente')->valoreUscita
  562.                     );
  563.                     return $this->redirectToRoute('homepage');
  564.                 }else{
  565.                     $this->addFlash(
  566.                         'error',
  567.                         $trans->OttieniElementoDizionario('dati_utente_errore_username_gia_esistente''dati_utente')->valoreUscita
  568.                     );
  569.                 }
  570.             }else{
  571.                 $this->addFlash(
  572.                     'error',
  573.                     $trans->OttieniElementoDizionario('dati_utente_errore_mail_gia_esistente''dati_utente')->valoreUscita
  574.                 );
  575.             }
  576.         }
  577.         return $this->render('ZZ_front_end/utente/nuova_registrazione.html.twig', array(
  578.             Costanti::RU_RADICE_FORM => $form->createView(),
  579.         ));
  580.     }
  581. }