src/Controller/GestioneUtentiController.php line 528
<?php
namespace App\Controller;
use App\Entity\Destinazioni;
use App\Entity\MailSecondarieUtenti;
use App\Entity\Nazioni;
use App\Entity\User;
use App\Entity\UserCampiCustomTestata;
use App\Entity\UserCampiCustomValori;
use App\Model\Costanti;
use App\Model\GestioneUtenti;
use App\Model\Mailer;
use App\Model\Security\ReCaptchaGoogle;
use App\Model\Translating\Translating;
use DoctrineExtensions\Query\Postgresql\Date;
use Psr\Log\LoggerInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGenerator;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Twig\Environment;
class GestioneUtentiController extends AbstractController
{
/** @var ReturnImpostazioniServiceController */
private $imp;
/** @var ServiziController */
private $servizi;
/** @var LoggerInterface */
private $logger;
/** @var Translating */
private $translating;
/** @var Mailer */
private $mailer;
/** @var UserPasswordHasherInterface */
private $passwordHasher;
/** @var Environment */
private $twig;
/** @var TokenStorageInterface */
private $token;
/** @var SessionInterface */
private $session;
/** @var GestioneUtenti */
private $gestioneUtenti;
/*
* @Route("/login", name="home_login")
* @Route("/looogin", name="home_loogin")
public function loginAction(Request $request, ServiziController $servizi, ReturnImpostazioniServiceController $imp, AuthenticationUtils $authenticationUtils)
{
// replace this example code with whatever you need
$user = $this->servizi->OttieniUtenteCorrente();
if ($user) {
$url = $servizi->getRefererRoute($request);
if ($url){
return $this->redirect($url);
}else{
return $this->redirectToRoute('homepage');
}
} else {
$appId = $imp->ritornaImpostazioneDaNome("FacebookAppId");
$appSecret = $imp->ritornaImpostazioneDaNome("FacebookAppSecret");
$googleAppId = $imp->ritornaImpostazioneDaNome("GoogleClientId");
$googleAppSecret = $imp->ritornaImpostazioneDaNome("GoogleClientSecret");
$googleAppName = $imp->ritornaImpostazioneDaNome("GoogleClientAppName");
$loginUrl = '';
if ($appId != "" && $appSecret != "") {
$fb = new \Facebook\Facebook([
"app_id" => $appId,
"app_secret" => $appSecret
]);
$helper = $fb->getRedirectLoginHelper();// to set redirection url
$permissions = ["email", "birthday", "name", "last_name", "id", "first_name"];// set required permissions to user details
$loginUrl = $helper->getLoginUrl($this->generateUrl('facebook_login'), $permissions);
}
$googleLoginUrl = '';
if ($googleAppId != '' && $googleAppName != '' && $googleAppSecret != '') {
$client = new \Google_Client();
$client->setApplicationName($googleAppName);// to set app name
$client->setClientId($googleAppId);// to set app id or client id
$client->setClientSecret($googleAppSecret);// to set app secret or client secret
$client->setRedirectUri($this->generateUrl('google_login'));// to set redirect uri
//$client->setHostedDomain("your hosted domain");// to set hosted domain (optional)
$url = $client->createAuthUrl();// to get login url
$googleLoginUrl = $url;
}
return $this->render('clienti/login_primary.html.twig', array(
'login_no_ordine' => true,
'fb_login_url' => $loginUrl,
'google_login_url' => $googleLoginUrl,
'error' => $authenticationUtils->getLastAuthenticationError(),
'last_username' => $authenticationUtils->getla
));
}
}*/
/**
* GestioneUtentiController constructor.
* @param ReturnImpostazioniServiceController $imp
* @param ServiziController $servizi
* @param LoggerInterface $logger
* @param Translating $translating
* @param Mailer $mailer
* @param UserPasswordHasherInterface $passwordHasher
* @param Environment $twig
* @param TokenStorageInterface $token
* @param RequestStack $requestStack
* @param GestioneUtenti $gestioneUtenti
*/
public function __construct(ReturnImpostazioniServiceController $imp, ServiziController $servizi, LoggerInterface $logger, Translating $translating, Mailer $mailer, UserPasswordHasherInterface $passwordHasher, Environment $twig, TokenStorageInterface $token, RequestStack $requestStack, GestioneUtenti $gestioneUtenti)
{
$this->imp = $imp;
$this->servizi = $servizi;
$this->logger = $logger;
$this->translating = $translating;
$this->mailer = $mailer;
$this->passwordHasher = $passwordHasher;
$this->twig = $twig;
$this->token = $token;
$this->session = $requestStack->getSession();
$this->gestioneUtenti = $gestioneUtenti;
}
/**
* @Route("/agente/altroDato/{operazione}", name="agente_altro_dato", defaults={"operazione" = "V"}, options={"expose"=true})
* @Route("/altroDato/{operazione}", name="utente_altro_dato", defaults={"operazione" = "V"}, options={"expose"=true})
*/
public function modificaEliminaAltroDatoUtente(Request $request, $operazione)
{
//OPERAZIONI ( V=Visualizza, E=Elimina, M=Modifica )
/** @var User $user */
$user = $this->servizi->OttieniUtenteCorrente();
$em = $this->servizi->doctrine->getManager();
if ($user){
switch ($operazione){
case "V":{
return new JsonResponse($user->getAltriDati());
break;
}
case "M":{
$valore = $request->get('valore');
$user->setAltriDati($valore);
$em->persist($user);
$em->flush();
return new JsonResponse(array('esito' => 'OK'));
break;
}
case "E":{
$user->setAltriDati(null);
$em->persist($user);
$em->flush();
return new JsonResponse(array('esito' => 'OK'));
break;
}
default:{
return new JsonResponse(array('esito' => 'NO', 'msg' => 'ERRORE OPERAZIONE NON RICONOSCIUTA'));
break;
}
}
}
return new Response('');
}
/**
* @Route("/profile/change-password", name="profile_change_password")
*/
public function changePasswordAction(Request $request)
{
/** @var User $user */
$user = $this->servizi->OttieniUtenteCorrente();
if ($user){
$trans = $this->translating;
$trans->CaricaTraduzioniDaFamiglia('modifica_utente', $request->getLocale());
$form = $this->createFormBuilder()
->add(Costanti::CP_PASSWORD_CORRENTE, PasswordType::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;')))
->add(Costanti::CP_PASSWORD_NUOVA, PasswordType::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;')))
->add(Costanti::CP_PASSWORD_NUOVA_RIPETI, PasswordType::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;')))
->add(Costanti::CP_CONFERMA, SubmitType::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;')))
->getForm();
$form->handleRequest($request);
$errori_validazione = array();
if ($form->isSubmitted() && $form->isValid()){
foreach ($form as $key => $value)
{
if ($form[$key]->getData() == "" &&
($key == Costanti::CP_PASSWORD_CORRENTE || $key == Costanti::CP_PASSWORD_NUOVA || $key == Costanti::CP_PASSWORD_NUOVA_RIPETI))
{
array_push($errori_validazione, $key);
}
}
if (count($errori_validazione) <= 0) {
if ($form[Costanti::CP_PASSWORD_NUOVA]->getData() == $form[Costanti::CP_PASSWORD_NUOVA_RIPETI]->getData()){
if ($this->validUser($user->getUsername(), $form[Costanti::CP_PASSWORD_NUOVA]->getData())) {
$user->setPassword($this->passwordHasher->hashPassword($user, $form[Costanti::CP_PASSWORD_NUOVA]->getData()));
$em = $this->servizi->doctrine->getManager();
$em->persist($user);
$em->flush();
$mailer = $this->mailer;
$mailSecondari = $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class)->findBy(array('inviaConfermaOrdine' => true, 'utente' => $user));
$adresses = array();
foreach ($mailSecondari as $item){
array_push($adresses, $item->getIndirizzoMail());
}
$mailFrom = $this->imp->caricaCacheImpostazioniDaFamiglie('IndirizzoMailFromInvioComunicazioni');
//INVIO MAIL A CLIENTE
$mailer->SendMail(
$trans->OttieniElementoDizionario('modifica_utente_cambia_password_btn', 'modifica_utente')->valoreUscita,
$this->renderView(
'email/utenti/cambio_password.html.twig',
array(
'utente' => $user,
)
),
$user->getUsername(),
$adresses,
$mailFrom,
"text/html");
$this->addFlash(
'notice',
$trans->OttieniElementoDizionario('modifica_utente_cambia_password_cambio_effettuto_flash', 'modifica_utente')->valoreUscita
);
$url = $this->servizi->getRefererRoute($request);
if ($url){
return $this->redirect($url);
}else{
return $this->redirectToRoute('homepage');
}
}else{
$this->addFlash(
'error',
$trans->OttieniElementoDizionario('modifica_utente_cambia_password_vecchia_psw_errata_msg', 'modifica_utente')->valoreUscita
);
}
}else{
$this->addFlash(
'error',
$trans->OttieniElementoDizionario('modifica_utente_cambia_password_non_coincidono_msg', 'modifica_utente')->valoreUscita
);
}
}
}
return $this->render('ZZ_front_end/utente/modifica_password.html.twig', array(
Costanti::PGU_UTENTE => $user,
Costanti::CP_RADICE_FORM => $form->createView()
));
}else{
return $this->redirectToRoute('home_login');
}
}
/**
* @param $username
* @param $password
* @return bool
*/
public function validUser($username, $password){
$user = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('username' => $username));
$bool = $this->passwordHasher->isPasswordValid($user->getPassword(),$password);
return $bool;
}
/**
* @Route("/profile/change-mail", name="home_register")
*/
public function changeMailAction(Request $request)
{
/** @var User $user */
$user = $this->servizi->OttieniUtenteCorrente();
if ($user){
$trans = $this->translating;
$trans->CaricaTraduzioniDaFamiglia('modifica_utente', $request->getLocale());
$form = $this->createFormBuilder()
->add(Costanti::CM_NUOVA_MAIL, EmailType::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;')))
->add(Costanti::CM_APPLICA, SubmitType::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;')))
->getForm();
$form->handleRequest($request);
$errori_validazione = array();
if ($form->isSubmitted() && $form->isValid()) {
foreach ($form as $key => $value) {
if ($form[$key]->getData() == "" &&
($key == Costanti::CM_NUOVA_MAIL)) {
array_push($errori_validazione, $key);
}
}
if (count($errori_validazione) <= 0) {
$stessaMail = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('email' => strtolower($form[Costanti::CM_NUOVA_MAIL]->getData())));
if (!$stessaMail){
$user->setEmail($form[Costanti::CM_NUOVA_MAIL]->getData());
$em = $this->servizi->doctrine->getManager();
$em->persist($user);
$em->flush();
$this->addFlash(
'notice',
$trans->OttieniElementoDizionario('modifica_utente_cambia_indirizzo_mail_successo', 'modifica_utente')->valoreUscita
);
$mailFrom = $this->imp->ritornaImpostazioneDaNome('IndirizzoMailFromInvioComunicazioni');
$mailer = $this->mailer;
//INVIO MAIL A CLIENTE
$mailer->SendMail(
$trans->OttieniElementoDizionario('modifica_utente_cambia_indirizzo_mail_oggetto_mail', 'modifica_utente')->valoreUscita,
$this->renderView(
'email/utenti/cambio_mail.html.twig',
array(
'utente' => $user,
)
),
$user->getEmail(),
array(),
$mailFrom,
"text/html");
$url = $this->servizi->getRefererRoute($request);
if ($url){
return $this->redirect($url);
}else{
return $this->redirectToRoute('homepage');
}
}else{
$this->addFlash(
'error',
$trans->OttieniElementoDizionario('modifica_utente_cambia_indirizzo_mail_errore_mail_presente', 'modifica_utente')->valoreUscita
);
}
}
}
return $this->render('ZZ_front_end/utente/modifica_mail.html.twig', array(
Costanti::PGU_UTENTE => $user,
Costanti::CM_RADICE_FORM => $form->createView()
));
}else{
return $this->redirectToRoute('home_login');
}
}
/**
* @Route("/user/forgot-password", name="password_dimenticata")
*/
public function forgotPassword(Request $request)
{
$trans = $this->translating;
$trans->CaricaTraduzioniDaFamiglia('password_dimenticata', $request->getLocale());
$form = $this->createFormBuilder()
->add(Costanti::PD_EMAIL, TextType::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;')))
->add(Costanti::PD_CONFERMA_BTN, SubmitType::class, array('label' => $trans->OttieniElementoDizionario('password_dimenticata_conferma_button', 'password_dimenticata')->valoreUscita, 'attr' => array('class' => 'btn btn-primary', 'style' => 'margin-bottom:5px;')));
$form = $form->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$email = $form[Costanti::PD_EMAIL]->getData();
$user = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('email' => strtolower($email)));
if($user){
$em = $this->servizi->doctrine->getManager();
$user->setDataRichiestaResetPassword(new \DateTime());
$rnd = $this->servizi->randomString(25);
$user->setTokenResetPassword(md5($rnd));
$em->persist($user);
$em->flush();
$this->translating->CaricaTraduzioniDaFamiglia('mail_password_dimenticata', $request->getLocale());
$this->imp->caricaCacheImpostazioniDaFamiglie(array('Invio mail'));
$mailFrom = $this->imp->ritornaImpostazioneDaNome('IndirizzoMailFromInvioComunicazioni');
$nomeShop = $this->imp->ritornaImpostazioneDaNome('NomeShop');
$this->mailer->SendMail(
$nomeShop . ' - ' . $this->translating->OttieniElementoDizionario('mail_password_dimenticata_titolo', 'mail_password_dimenticata')->valoreUscita,
$this->renderView(
'email/utenti/password_dimenticata.html.twig',
array(
'utente' => $user,
'linkResetPassword' => $this->generateUrl('password_dimenticata_nuova', array('user_id' => $user->getId(), 'token' => $rnd), UrlGenerator::ABSOLUTE_URL)
)
),
$user->getEmail(),
array(),
$mailFrom,
"text/html"
);
}
$this->addFlash(
'notice',
$trans->OttieniElementoDizionario('password_dimenticata_messaggio_controlla_mail', 'password_dimenticata')->valoreUscita
);
}
return $this->render('ZZ_front_end/utente/password_dimenticata.html.twig', array('form' => $form->createView()));
}
/**
* @Route("/user/forgot-password-nuova/{user_id}/{token}", name="password_dimenticata_nuova", defaults={"token"="", "user_id"=""})
*/
public function forgotPasswordNuova(Request $request, $user_id = "", $token = "")
{
$trans = $this->translating;
$trans->CaricaTraduzioniDaFamiglia('password_dimenticata', $request->getLocale());
$trans->CaricaTraduzioniDaFamiglia('mail_password_dimenticata', $request->getLocale());
$user = $this->servizi->doctrine->getRepository(User::class)->find($user_id);
$errore = true;
if($user){
//Verifico il TOKEN passato
if($user->getTokenResetPassword() != '' and $user->getTokenResetPassword() != null && $user->getTokenResetPassword() == md5($token)){
//Verifico se sono passati più di 5 min dalla data di reset
$datarichiestaCon5Min = $user->getDataRichiestaResetPassword();
$datarichiestaCon5Min->add(new \DateInterval('PT' . 5 . 'M'));
$dataOraAttuale = new \DateTime();
if($user->getDataRichiestaResetPassword() != null && $dataOraAttuale < $datarichiestaCon5Min){
$em = $this->servizi->doctrine->getManager();
$user->setTokenResetPassword(null);
$user->setDataRichiestaResetPassword(null);
$em->persist($user);
$em->flush();
//OK PROCEDO CON LA RICHIESTA DELLA PASSWORD
$gestioneUtente = new GestioneUtenti($this->servizi->doctrine, $this->mailer, $this->imp, $this->servizi->twig, $this->translating, $this->servizi, $this->passwordHasher);
$gestioneUtente->ResetPasswordUtente($user, $request, true);
$this->addFlash(
'notice',
$trans->OttieniElementoDizionario('password_dimenticata_reset_effettuato', 'mail_password_dimenticata')->valoreUscita
);
$errore = false;
}else{
$this->servizi->ScriviRegistroAttivita('', '', false, "Reset non riuscito per richiesta scaduta", null);
$this->logger->notice("Data richiesta scaduta!");
}
}else{
$this->logger->notice("Token di reset non corrispondente!");
}
}else{
$this->logger->notice("Utente non rilevato!");
}
if($errore){
$this->addFlash(
'error',
$trans->OttieniElementoDizionario('password_dimenticata_errore', 'password_dimenticata')->valoreUscita
);
}
//return $this->render('ZZ_front_end/utente/password_dimenticata.html.twig', []);
return $this->redirectToRoute('homepage');
}
/**
* @Route("/register", name="register")
*/
public function registerAction(Request $request)
{
$abilita = $this->imp->ritornaImpostazioneDaNome('AbilitaRegistrazioneAutonomaUtenti');
if (!$abilita || $abilita == '0'){
return $this->redirectToRoute('homepage');
}
$trans = $this->translating;
$trans->CaricaTraduzioniDaFamiglia('dati_utente', $request->getLocale());
$form = $this->createFormBuilder()
->add(Costanti::RU_AZIENDA_O_PRIVATO, ChoiceType::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()))
->add(Costanti::RU_RAGIONE_SOCIALE, TextType::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;')))
->add(Costanti::RU_NOME, TextType::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;')))
->add(Costanti::RU_COGNOME, TextType::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;')))
->add(Costanti::RU_CODICE_FISCALE, TextType::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;')))
->add(Costanti::RU_PARTITA_IVA, TextType::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;')))
->add(Costanti::RU_INDIRIZZO, TextType::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;')))
->add(Costanti::RU_CITTA, TextType::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;')))
->add(Costanti::RU_PROVINCIA, TextType::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;')))
->add(Costanti::RU_CAP, TextType::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;')))
->add(Costanti::RU_STATO, EntityType::class, array('required' => true, 'class' => Nazioni::class, 'choice_label' => function ($nazione) {
/** @var $nazione Nazioni */
return $nazione->getDescrizione();
}, '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;')))
->add(Costanti::RU_TELEFONO, TextType::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;')))
->add(Costanti::RU_FAX, TextType::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;')))
->add(Costanti::RU_INDIRIZZO_MAIL, EmailType::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;')))
->add(Costanti::RU_INDIRIZZO_PEC, EmailType::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;')))
->add(Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICA, TextType::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;')))
->add(Costanti::RU_DD_RAGIONE_SOCIALE, TextType::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;')))
->add(Costanti::RU_DD_INDIRIZZO, TextType::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;')))
->add(Costanti::RU_DD_CITTA, TextType::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;')))
->add(Costanti::RU_DD_PROVINCIA, TextType::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;')))
->add(Costanti::RU_DD_CAP, TextType::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;')))
->add(Costanti::RU_DD_TELEFONO, TextType::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;')))
->add(Costanti::RU_DD_STATO, EntityType::class, array('required' => false, 'class' => Nazioni::class, 'choice_label' => function ($nazione) {
/** @var $nazione Nazioni */
return $nazione->getDescrizione();
}, '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;')))
->add(Costanti::RU_DD_INDIRIZZO_MAIL, EmailType::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;')))
->add(Costanti::RU_USERNAME, TextType::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;')))
->add(Costanti::RU_PASSWORD, PasswordType::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;')))
->add(Costanti::RU_RIPETI_PASSWORD, PasswordType::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;')))
->add(Costanti::RU_REGISTRA, SubmitType::class, array('label' => $trans->OttieniElementoDizionario('dati_utente_registra_btn', 'dati_utente')->valoreUscita, 'attr' => array('class' => 'btn btn-primary', 'style' => 'margin-bottom:5px;')));
/** @var UserCampiCustomTestata[] $campiCustomUser */
$campiCustomUser = $this->servizi->doctrine->getRepository(UserCampiCustomTestata::class)->findBy(array('luogoVisualizzazione' => 'registrazioneUtente'));
$chiaviCampiCustom = array();
foreach ($campiCustomUser as $tst) {
$chiaviCampiCustom = array_merge($this->servizi->RitornaChiaviUserCampiCustom($tst), $chiaviCampiCustom);
$form = $this->servizi->AggiungiChildAFormUserCampiCustom($tst, $form);
}
$form = $form->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$userRepo = $this->servizi->doctrine->getRepository(User::class);
if (!$userRepo->findOneBy(array('email' => $form[Costanti::RU_INDIRIZZO_MAIL]->getData()))) {
if (!$userRepo->findOneBy(array('username' => $form[Costanti::RU_USERNAME]->getData()))) {
$gestioneUtenti = $this->gestioneUtenti;
$nuovoUtente = $gestioneUtenti->CreaUtente(
$form[Costanti::RU_RAGIONE_SOCIALE]->getData(),
$form[Costanti::RU_NOME]->getData(),
$form[Costanti::RU_COGNOME]->getData(),
$form[Costanti::RU_INDIRIZZO_MAIL]->getData(),
$form[Costanti::RU_INDIRIZZO]->getData(),
$form[Costanti::RU_CITTA]->getData(),
$form[Costanti::RU_CAP]->getData(),
$form[Costanti::RU_PROVINCIA]->getData(),
$form[Costanti::RU_STATO]->getData() ? ($form[Costanti::RU_STATO]->getData())->getDescrizione() : '',
$form[Costanti::RU_TELEFONO]->getData(),
$form[Costanti::RU_CODICE_FISCALE]->getData(),
$form[Costanti::RU_PARTITA_IVA]->getData(),
$form[Costanti::RU_PASSWORD]->getData(),
$form[Costanti::RU_USERNAME]->getData(),
$form[Costanti::RU_INDIRIZZO_PEC]->getData(),
$form[Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICA]->getData(),
$form[Costanti::RU_AZIENDA_O_PRIVATO]->getData() == "privato" ? true : false,
'',
null,
true
);
//Verifico se ci sono dei campi custom da inserire nel db
if(count($chiaviCampiCustom) > 0) {
$em = $this->servizi->doctrine->getManager();
foreach ($chiaviCampiCustom as $cmpCst) {
$dettaglioCampoCustom = $this->servizi->RitornaDettaglioUserCampiCustom($cmpCst);
$campo = $dettaglioCampoCustom->getCampo();
if ($campo) {
if ($form[$cmpCst]->getData() != '') {
$campoCustom = new UserCampiCustomValori();
$campoCustom->setDataCreazione(new \DateTime());
$campoCustom->setDataModifica(new \DateTime());
$campoCustom->setUser($nuovoUtente);
$campoCustom->setTestata($dettaglioCampoCustom->getTestata());
$campoCustom->setCampo($dettaglioCampoCustom->getCampo());
$campoCustom->setUtenteModifica($this->servizi->OttieniUtenteCorrente());
$campoCustom->setTipoDato($dettaglioCampoCustom->getCampo()->getTipoDato());
$campoCustom->setTestoVisualizzato($dettaglioCampoCustom->getCampo()->getTestoVisualizzato());
$campoCustom->setValore($form[$cmpCst]->getData());
$em->persist($campoCustom);
}
}
}
$em->flush();
}
$utenteOrdine = $nuovoUtente; //Setto l'utente dell'ordine con l'utente appena creato
//effettuo automaticamente il login per il nuovo utente creato
$token = new UsernamePasswordToken($nuovoUtente, null, 'main', $nuovoUtente->getRoles());
$this->token->setToken($token);
$this->session->set('_security_main', serialize($token));
/** @var $destinazione Destinazioni */
$destinazione = null;
//Aggiungo la destinazione base
$destinazione = $gestioneUtenti->CreaDestinazione($nuovoUtente, $nuovoUtente->getRagioneSociale(), $nuovoUtente->getIndirizzo(), $nuovoUtente->getCitta(), $nuovoUtente->getProvincia(),
$nuovoUtente->getCap(), $nuovoUtente->getTelefono(), $nuovoUtente->getNazione(), $nuovoUtente->getEmail());
//Se inserita una destinazione diversa la inserisco
if ($form[Costanti::RU_DD_RAGIONE_SOCIALE]->getData() != '') {
$destinazione = $gestioneUtenti->CreaDestinazione($nuovoUtente, $form[Costanti::RU_DD_RAGIONE_SOCIALE]->getData(), $form[Costanti::RU_DD_INDIRIZZO]->getData(), $form[Costanti::RU_DD_CITTA]->getData(),
$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() : ''),
$form[Costanti::RU_DD_INDIRIZZO_MAIL]->getData(), $form[Costanti::RU_DD_CITTA]->getData());
}
$this->addFlash(
'notice',
$trans->OttieniElementoDizionario('dati_utente_registrazione_effettuata', 'dati_utente')->valoreUscita
);
return $this->redirectToRoute('homepage');
}else{
$this->addFlash(
'error',
$trans->OttieniElementoDizionario('dati_utente_errore_username_gia_esistente', 'dati_utente')->valoreUscita
);
}
}else{
$this->addFlash(
'error',
$trans->OttieniElementoDizionario('dati_utente_errore_mail_gia_esistente', 'dati_utente')->valoreUscita
);
}
}
return $this->render('ZZ_front_end/utente/nuova_registrazione.html.twig', array(
Costanti::RU_RADICE_FORM => $form->createView(),
));
}
}