src/Controller/ShopComuneController.php line 110
<?phpnamespace App\Controller;use App\Entity\FiltroVisualizzazioneArticoliClienti;use App\Entity\MagazzinoSecondarioDisponibilita;use App\Entity\MappaCategorieArticoli;use App\Entity\StatisticheRicerca;use App\Model\Caching\Caching_Categorie;use App\Model\Costanti;use App\Model\DizionarioDatabase;use App\Model\Entita\AlberoCategorie;use App\Model\Entita\Categoria;use App\Model\Entita\MagazzinoSecondario;use App\Model\Entita\MappaCategoriaArticolo;use App\Model\FiltroAttributi;use App\Model\RecuperoDati;use App\Model\ContenitoreCategoriePerFiltri;use App\Model\FiltroRicerca;use App\Entity\User;use App\Model\RitornoRigheShop;use App\Model\SearchEngine;use Psr\Log\LoggerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;class ShopComuneController extends AbstractController{/** @var LoggerInterface */private $logger;/** @var ReturnImpostazioniServiceController */private $imp;/** @var ServiziController */private $servizi;/*** ShopComuneController constructor.* @param LoggerInterface $logger* @param ReturnImpostazioniServiceController $imp* @param ServiziController $servizi*/public function __construct(LoggerInterface $logger, ReturnImpostazioniServiceController $imp, ServiziController $servizi){$this->logger = $logger;$this->imp = $imp;$this->servizi = $servizi;}/*** @Route("/shopCM")* @Route("/shopCM", methods={"GET"})* @Route("/shopCM/{page}/{categoria_1}/{categoria_2}/{categoria_3}/{categoria_4}/{categoria_5}", defaults={"page"="1", "categoria_1"="", "categoria_2"="", "categoria_3"="", "categoria_4"="", "categoria_5"=""})*/public function redirectNaviga(Request $request , $categoria_1 = "", $categoria_2 = "", $categoria_3 = "", $categoria_4 = "", $categoria_5 = "", $page = 1){return $this->redirectToRoute('home_shop_comune_naviga', array('page' => $page,'categoria_1' => $categoria_1,'categoria_2' => $categoria_2,'categoria_3' => $categoria_3,'categoria_4' => $categoria_4,'categoria_5' => $categoria_5), Response::HTTP_MOVED_PERMANENTLY);}/*** @Route("/richiestaPrezzo/{idMappa}", name="richiesta_prezzo_modal", options={"expose"=true})*/public function richiestaPrezzo(Request $request, $idMappa){$mappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class)->find($idMappa);/** @var User $user */$user = $this->servizi->OttieniUtenteCorrente();/** @var MappaCategoriaArticolo $mappaEntita */$mappaEntita = MappaCategoriaArticolo::CreaDaEntitadoctrine($this->servizi->doctrine, $this->servizi, $user ? $user->getCodiceCliente() : '', $mappa, $user, $request->getLocale());return $this->render('ZZ_front_end/modal/modal_richiesta_prezzo.html.twig', array(Costanti::T_DETTAGLIO_ARTICOLO_IDENTIFICATO => $mappaEntita));}/*** @Route("/modalMagazziniSecondari/{idMappa}/{qta}", name="magazzini_secondari_modal", options={"expose"=true})*/public function magazziniSecondariModal(Request $request, $idMappa, $qta){$mappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class)->find($idMappa);$recuperoDati = new RecuperoDati($this->servizi->doctrine, $this->imp, $this->servizi);/** @var User $user */$user = $this->servizi->OttieniUtenteCorrente();/** @var MappaCategoriaArticolo $mappaEntita */$mappaEntita = MappaCategoriaArticolo::CreaDaEntitadoctrine($this->servizi->doctrine, $this->servizi, $user ? $user->getCodiceCliente() : '', $mappa, $user, $request->getLocale());/** @var MagazzinoSecondario[] $magazziniSecondari */$magazziniSecondariDaMappa = $recuperoDati->RitornaMagazziniSecondariDaMappa($idMappa);return $this->render('ZZ_front_end/modal/modal_magazzini_secondari.html.twig', array(Costanti::T_MAGAZZINI_SECONDARI => $magazziniSecondariDaMappa,Costanti::T_MAPPA_IDENTIFICATA => $mappaEntita,Costanti::T_QTA_ORDINATA => $qta));}/*** @Route("/products", name="home_shop_comune")* @Route("/products", name="shop_comune_cerca_generico", methods={"GET"}, options={"expose"=true})* @Route("/products/{page}/{categoria_1}/{categoria_2}/{categoria_3}/{categoria_4}/{categoria_5}", name="home_shop_comune_naviga", defaults={"page"="1", "categoria_1"="", "categoria_2"="", "categoria_3"="", "categoria_4"="", "categoria_5"=""})*/public function navigaShopComune(Request $request, $categoria_1 = "", $categoria_2 = "", $categoria_3 = "", $categoria_4 = "", $categoria_5 = "", $page = 1){$this->imp->caricaCacheImpostazioniDaNomi(array('UsaSearchEngine', 'AbilitaB2C', 'FiltroVisualizzazioneArticoloPerShopComune', 'NumeroArticoliPaginaPrincipaleShopComune', 'AbilitaDebugUtentiAmministrativi', 'AttivaUtilizzoAttributiArticoli', 'CodiceListinoShopComune', 'DisponibileSommatoMagazziniSecondari'));/** @var User $user */$user = $this->servizi->OttieniUtenteCorrente();$usaSearchEngine = $this->imp->ritornaImpostazioneDaNome('UsaSearchEngine') == '1';if ($this->imp->ritornaImpostazioneDaNome('AbilitaB2C') != '1' && !$this->servizi->OttieniUtenteCorrente()){return $this->redirectToRoute('home_login');}$filtroComune = $this->imp->ritornaImpostazioneDaNome('FiltroVisualizzazioneArticoloPerShopComune');// FILTRO VISUALIZZAZIONE ARTICOLI CLIENTI$filtroRiferimento = null;if ($user){if ($user->getFiltroVisualizzazioneArticoliClienti()) {if ($user->getFiltroVisualizzazioneArticoliClienti()->getElencoCategorie() != '')$filtroRiferimento = $user->getFiltroVisualizzazioneArticoliClienti();}}else if ($filtroComune != ''){$ffl = $this->servizi->doctrine->getRepository(FiltroVisualizzazioneArticoliClienti::class)->find($filtroComune);if ($ffl && $ffl->getElencoCategorie() != '')$filtroRiferimento = $ffl;}$recuperoDati = new RecuperoDati($this->servizi->doctrine, $this->imp, $this->servizi);$numeroArticoliPerPagina = $this->imp->ritornaImpostazioneDaNome("NumeroArticoliPaginaPrincipaleShopComune");$abAttrVariabile = $this->imp->ritornaImpostazioneDaNome("AttivaUtilizzoAttributiArticoli");$debug = $this->imp->ritornaImpostazioneDaNome("AbilitaDebugUtentiAmministrativi");$logger = $this->logger;$abilitaAttributi = $abAttrVariabile == '1' ? true : false;$deviazioneSuPaginaRicerca = false;if ($numeroArticoliPerPagina == "" || $numeroArticoliPerPagina <= 0)$numeroArticoliPerPagina = 1;$codiceCliente = "";if($this->servizi->OttieniUtenteCorrente()){$codiceCliente = $this->servizi->OttieniUtenteCorrente()->getCodiceCliente();if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")){$altriDati = $this->servizi->OttieniUtenteCorrente() ? $this->servizi->OttieniUtenteCorrente()->getAltriDati() : null;if ($altriDati && $altriDati != null){$json = json_decode($altriDati, true);$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($json['codice'], $this->servizi->OttieniUtenteCorrente());if ($anagraficaTrovata){$clienteSelezionatoAgente = $anagraficaTrovata;$codiceCliente = $clienteSelezionatoAgente->getCodice();}}}}/* SISTEMO LE VARIABILI AGGIUNGENDO / SE TOLTO E SOSTITUITO CON £-£ */$categoria_1 = str_replace("£-£", "/", $categoria_1);$categoria_2 = str_replace("£-£", "/", $categoria_2);$categoria_3 = str_replace("£-£", "/", $categoria_3);$categoria_4 = str_replace("£-£", "/", $categoria_4);$categoria_5 = str_replace("£-£", "/", $categoria_5);$filtro = new ContenitoreCategoriePerFiltri();/** @var $categorie AlberoCategorie[] */$listaCategorie = $recuperoDati->recuperaAlberoCategorie($filtro, $request->getLocale(), $filtroRiferimento);$listaCategorieChiaviParent = array();foreach ($listaCategorie as $lc){if($lc->parent){$_lc_id = $lc->parent->id;if (key_exists($_lc_id, $listaCategorieChiaviParent)){array_push($listaCategorieChiaviParent[$_lc_id], $lc);}else{$listaCategorieChiaviParent[$_lc_id] = array($lc);}}}$filtroRicerca = array();if (key_exists("search", $request->query->all())){ //Se ritorna true vuol dire che c'è una stringa di ricercaif ($debug){$logger->info('Search parameter: ' . $request->query->get('search'));}$deviazioneSuPaginaRicerca = true;//Splitto con spazio le varie stringhe di ricerca$f = new FiltroRicerca();$stringaRicerca = $request->query->get('search');$f->soloSearchEngine = $usaSearchEngine;$f->stringaSearchEngine = ($stringaRicerca . ' | ((@assArtCli_codiceAnagrafica ' . SearchEngine::verificaEscape($codiceCliente) . ') (@(assArtCli_codice,assArtCli_descrizione) ' . SearchEngine::verificaEscape($stringaRicerca) . ')) ' );array_push($filtroRicerca, $f);} else if (count( $request->query->all()) > 0){if ($debug){$logger->info('Parametri request: ' . print_r($request->query->all(), true));}//Se esistono dei parametri vuol dire che sto filtrando con gli attributi$dizionarioDb = new DizionarioDatabase($this->servizi->doctrine);$colonneAmmesse = $dizionarioDb->ritornaArrayNomiColonnePerFiltroFormAttributi();/** Array con chiave id parametro e all'interno 2 parametri da a oppure uno se =* ES: {* 'id' => {* 'da' => ''* 'a' => ''* }* }* Alla fine se $raccoltaRangeParametri contiene qualcosa itero e aggiungo il filtro*/$raccoltaRangeParametri = array();foreach ($request->query->all() as $key => $value){$deviazioneSuPaginaRicerca = true;$chiaveDecod = urldecode($key);$valoreDecod = urldecode($request->query->all()[$key]);if ($debug){$logger->info('Chiave: ' . $chiaveDecod . ' --- Valore: ' . $valoreDecod);}if ($valoreDecod != '') {$valoreCorrettoDaUtilizzare = str_replace(Costanti::CSI_CERCA_CON_FILTRO_SU_COLONNA, '', $chiaveDecod);if (strpos($chiaveDecod, Costanti::CSI_CERCA_CON_FILTRO_SU_COLONNA) === 0) { //Se inizia con il carattere speciale che determina il filtro su una colonna e non su un attributoif (in_array($valoreCorrettoDaUtilizzare, $colonneAmmesse)) {//Verifico se la colonna indicata è presente nell'array delle colonne concesse così da prevenire l'SQL INJECTION//Se non è permessa la colonna salto il parametro di filtro$f = new FiltroRicerca();$f->colonne = array(str_replace('-', '.', $valoreCorrettoDaUtilizzare)); //Sostituisco - con .$f->operatore = 'LIKE';$f->valore = '%' . $valoreDecod . '%';array_push($filtroRicerca, $f);}} else {$idAtt = $chiaveDecod;if (strpos($chiaveDecod, Costanti::CSI_ATTRIBUTI_INIZIO_A) === 0 || strpos($chiaveDecod, Costanti::CSI_ATTRIBUTI_INIZIO_DA) === 0){//Se la chiave contiene il valore di inizio o fine attributo lo tratto come tale$idAtt = str_replace(Costanti::CSI_ATTRIBUTI_INIZIO_DA, '', $idAtt);$idAtt = str_replace(Costanti::CSI_ATTRIBUTI_INIZIO_A, '', $idAtt);if (!array_key_exists($idAtt, $raccoltaRangeParametri)){$raccoltaRangeParametri[$idAtt] = array('da' => '', 'a' => '');}if (strpos($chiaveDecod, Costanti::CSI_ATTRIBUTI_INIZIO_DA) === 0){$raccoltaRangeParametri[$idAtt]['da'] = $valoreDecod;}else if (strpos($chiaveDecod, Costanti::CSI_ATTRIBUTI_INIZIO_A) === 0){$raccoltaRangeParametri[$idAtt]['a'] = $valoreDecod;}}else {//Vuol dire che non è un parametro da a$raccoltaRangeParametri[$idAtt] = $valoreDecod;}}}}if ($debug){$logger->info('Raccolta range parametri: ' . print_r($raccoltaRangeParametri, true));}foreach ($raccoltaRangeParametri as $key => $value){if (is_array($value)){ //Vuol dire che ho il da - a$f = new FiltroAttributi();$f->idAttributo = $key;$f->valoreDa = $value['da'];if($value['a'] != '') { //Se il valore a è diverso da vuoto uso il between altrimenti il semplice uguale$f->valoreA = $value['a'];$f->operatore = 'BETWEEN';}else{$f->operatore = '=';}array_push($filtroRicerca, $f);}else{$f = new FiltroAttributi();$f->idAttributo = $key;$f->valoreDa = strtolower($value);array_push($filtroRicerca, $f);}}}$noFilter = false;if (key_exists('search_no_filter', $request->query->all())){if ($request->query->get('search_no_filter') == '1'){$noFilter = true;}}//Verifico se sono specificate delle categorie per aggiungerle al filtro a meno che la variabile $noFilter non sia veraif (!$noFilter) {if ($categoria_1 != "") {$deviazioneSuPaginaRicerca = true;$f = new FiltroRicerca();$f->colonne = array('categoria1.nome_univoco');$f->operatore = "=";$f->valore = $categoria_1;array_push($filtroRicerca, $f);}if ($categoria_2 != "") {$deviazioneSuPaginaRicerca = true;$f = new FiltroRicerca();$f->colonne = array('categoria2.nome_univoco');$f->operatore = "=";$f->valore = $categoria_2;array_push($filtroRicerca, $f);}if ($categoria_3 != "") {$deviazioneSuPaginaRicerca = true;$f = new FiltroRicerca();$f->colonne = array('categoria3.nome_univoco');$f->operatore = "=";$f->valore = $categoria_3;array_push($filtroRicerca, $f);}if ($categoria_4 != "") {$deviazioneSuPaginaRicerca = true;$f = new FiltroRicerca();$f->colonne = array('categoria4.nome_univoco');$f->operatore = "=";$f->valore = $categoria_4;array_push($filtroRicerca, $f);}if ($categoria_5 != "") {$deviazioneSuPaginaRicerca = true;$f = new FiltroRicerca();$f->colonne = array('categoria5.nome_univoco');$f->operatore = "=";$f->valore = $categoria_5;array_push($filtroRicerca, $f);}}$da = 0;$a = $numeroArticoliPerPagina;if ($page > 1){$da = $numeroArticoliPerPagina * ($page - 1);}//Necessario per recuperare gli attributi ma attenzione a non inserirlo prima di recuperare le categorie$filtro->nomeUnivocoCat1 = $categoria_1;$filtro->nomeUnivocoCat2 = $categoria_2;$filtro->nomeUnivocoCat3 = $categoria_3;$filtro->nomeUnivocoCat4 = $categoria_4;$filtro->nomeUnivocoCat5 = $categoria_5;/** @var MappaCategoriaArticolo[] $righeShop */$ritornoRighe = $recuperoDati->recuperaRigheShop($filtroRicerca, $da, $a, $request->getLocale(), $codiceCliente, $filtro, $this->servizi->OttieniUtenteCorrente(), false, false, false, true, $abilitaAttributi);$righeShop = $ritornoRighe->righe;//Aggiungo statistiche ricerca / categorieif ($deviazioneSuPaginaRicerca && $request->query->get('search')){try{$stat = new StatisticheRicerca();$stat->setDataRicerca(new \DateTime());$stat->setConteggioRisultati($ritornoRighe->count);$stat->setStringaRicerca($request->query->get('search'));$stat->setCategorie($noFilter ? '' : $filtro->nomeUnivocoCat1 . '-' . $filtro->nomeUnivocoCat2 . '-' . $filtro->nomeUnivocoCat3 . '-' . $filtro->nomeUnivocoCat4 . '-' . $filtro->nomeUnivocoCat5);$em = $this->servizi->doctrine->getManager();$em->persist($stat);$em->flush();}catch (\Exception $ex){}}$servizi = $this->servizi;$ct1_db = null; $ct2_db = null; $ct3_db = null; $ct4_db = null; $ct5_db = null;$cacheCategorie = new Caching_Categorie($servizi);if ($categoria_5 != ''){$cat = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_5);//$cat = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_5));$ct5_db = $cat;$ct5_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct5_db, $request->getLocale());$servizi->inserisciStatisticaNavigazioneCategoria($cat, $request, $this->servizi->OttieniUtenteCorrente());} else if ($categoria_4 != ''){$cat = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_4);//$cat = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_4));$ct4_db = $cat;$ct4_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct4_db, $request->getLocale());$servizi->inserisciStatisticaNavigazioneCategoria($cat, $request, $this->servizi->OttieniUtenteCorrente());} else if ($categoria_3 != ''){$cat = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_3);//$cat = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_3));$ct3_db = $cat;$ct3_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct3_db, $request->getLocale());$servizi->inserisciStatisticaNavigazioneCategoria($cat, $request, $this->servizi->OttieniUtenteCorrente());} else if ($categoria_2 != ''){$cat = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_2);//$cat = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_2));$ct2_db = $cat;$ct2_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct2_db, $request->getLocale());$servizi->inserisciStatisticaNavigazioneCategoria($cat, $request, $this->servizi->OttieniUtenteCorrente());} else if ($categoria_1 != ''){$cat = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_1);//$cat = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_1));$ct1_db = $cat;$ct1_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct1_db, $request->getLocale());$servizi->inserisciStatisticaNavigazioneCategoria($cat, $request, $this->servizi->OttieniUtenteCorrente());}if($categoria_1 != '' && !$ct1_db){$ct1_db = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_1);//$ct1_db = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_1));$ct1_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct1_db, $request->getLocale());}if($categoria_2 != '' && !$ct2_db){$ct2_db = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_2);//$ct2_db = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_2));$ct2_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct2_db, $request->getLocale());}if($categoria_3 != '' && !$ct3_db){$ct3_db = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_3);//$ct3_db = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_3));$ct3_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct3_db, $request->getLocale());}if($categoria_4 != '' && !$ct4_db){$ct4_db = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_4);// $ct4_db = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_4));$ct4_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct4_db, $request->getLocale());}if($categoria_5 != '' && !$ct5_db){$ct5_db = $cacheCategorie->getCategoriaDaNomeUnivoco($categoria_5);//$ct5_db = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $categoria_5));$ct5_db = Categoria::CreaDaEntitadoctrine($this->servizi, $ct5_db, $request->getLocale());}/** @var MappaCategoriaArticolo[] $ritornoRigheCasuale */$ritornoRigheCasuale = $recuperoDati->recuperaRigheShop(null, 0, 25, $request->getLocale(), $codiceCliente, null, $this->servizi->OttieniUtenteCorrente(), false, true, false, true, false)->righe;//Calcolo il numero di pagine eventuali$ritornoR2 = $recuperoDati->recuperaRigheShop($filtroRicerca, $da, $a, $request->getLocale(), $codiceCliente, null, $this->servizi->OttieniUtenteCorrente(), true, false);$countRigheShop = $ritornoR2->count;$numeroPagine = 0;if ($countRigheShop > 0)$numeroPagine = ceil($countRigheShop / $numeroArticoliPerPagina); //arrotondo per eccesso$response = $this->render('ZZ_front_end/shop/shop_comune.html.twig', array(Costanti::T_LISTA_CATEGORIE => $listaCategorie,Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT => $listaCategorieChiaviParent,Costanti::T_CODICE_CLIENTE_IDENTIFICATO => $codiceCliente,Costanti::T_ATTRIBUTI => $ritornoRighe->attributi,Costanti::T_RIGHE_SHOP_CASUALI => $ritornoRigheCasuale,'cat1' => $categoria_1,'cat2' => $categoria_2,'cat3' => $categoria_3,'cat4' => $categoria_4,'cat5' => $categoria_5,Costanti::CATEGORIA_1_DB => $ct1_db,Costanti::CATEGORIA_2_DB => $ct2_db,Costanti::CATEGORIA_3_DB => $ct3_db,Costanti::CATEGORIA_4_DB => $ct4_db,Costanti::CATEGORIA_5_DB => $ct5_db,'abilitaAttributi' => $abAttrVariabile,Costanti::T_PAGINA_CORRENTE => $page,Costanti::T_NUMERO_PAGINE => $numeroPagine,Costanti::T_RIGHE_SHOP => $righeShop,Costanti::T_DEVIAZIONE_SU_PAGINA_RICERCA => $deviazioneSuPaginaRicerca,));/*$response->setCache(array('max_age' => 604800,'s_maxage' => 604800,'public' => true));*/return $response;}/*** @Route("/shopCM/{codice}", requirements={"codice"=".+"})*/public function redirectDettaglio(Request $request, $codice){return $this->redirectToRoute('home_shop_comune_dettaglio_prodotto', array('codice' => $codice), Response::HTTP_MOVED_PERMANENTLY);}/*** @Route("/product/{codice}", name="home_shop_comune_dettaglio_prodotto", requirements={"codice"=".+"})*/public function dettaglioProdotto(Request $request, $codice){/** @var ReturnImpostazioniServiceController $imp */$imp = $this->imp;$imp->caricaCacheImpostazioniDaNomi(array('AbilitaB2C', 'FiltroVisualizzazioneArticoloPerShopComune', 'CodiceListinoShopComune', 'AttivaUtilizzoAttributiArticoli', 'DisponibileSommatoMagazziniSecondari'));/** @var User $user */$user = $this->servizi->OttieniUtenteCorrente();if ($imp->ritornaImpostazioneDaNome('AbilitaB2C') != '1' && !$this->servizi->OttieniUtenteCorrente()){return $this->redirectToRoute('home_login');}$filtroComune = $imp->ritornaImpostazioneDaNome('FiltroVisualizzazioneArticoloPerShopComune');// FILTRO VISUALIZZAZIONE ARTICOLI CLIENTI$filtroRiferimento = null;if ($user){if ($user->getFiltroVisualizzazioneArticoliClienti()) {if ($user->getFiltroVisualizzazioneArticoliClienti()->getElencoCategorie() != '')$filtroRiferimento = $user->getFiltroVisualizzazioneArticoliClienti();}}else if ($filtroComune != ''){$ffl = $this->servizi->doctrine->getRepository(FiltroVisualizzazioneArticoliClienti::class)->find($filtroComune);if ($ffl && $ffl->getElencoCategorie() != '')$filtroRiferimento = $ffl;}$recuperoDati = new RecuperoDati($this->servizi->doctrine, $imp, $this->servizi);$abilitaAttributi = $imp->ritornaImpostazioneDaNome("AttivaUtilizzoAttributiArticoli") == '1' ? true : false;/* SISTEMO LE VARIABILI AGGIUNGENDO / SE TOLTO E SOSTITUITO CON £-£ */$codice = str_replace("£-£", "/", $codice);//Ottengo l'id del codice$servizi = $this->servizi;$idMappa = $servizi->estraiIdMappaDaLink($codice);//Recupero riga articolo$filtroRicerca = array();$f = new FiltroRicerca();$f->colonne = array('mappa.id');$f->operatore = "=";$f->valore = $idMappa;array_push($filtroRicerca, $f);$codiceCliente = "";if($this->servizi->OttieniUtenteCorrente()){$codiceCliente = $this->servizi->OttieniUtenteCorrente()->getCodiceCliente();if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")){$altriDati = $this->servizi->OttieniUtenteCorrente() ? $this->servizi->OttieniUtenteCorrente()->getAltriDati() : null;if ($altriDati && $altriDati != null){$json = json_decode($altriDati, true);$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($json['codice'], $this->servizi->OttieniUtenteCorrente());if ($anagraficaTrovata){$clienteSelezionatoAgente = $anagraficaTrovata;$codiceCliente = $clienteSelezionatoAgente->getCodice();}}}}/** @var RitornoRigheShop */$ritornoRighe = $recuperoDati->recuperaRigheShop($filtroRicerca, 0, 1, $request->getLocale(), $codiceCliente, null, $this->servizi->OttieniUtenteCorrente(), false, false, true, true, $abilitaAttributi);/** @var MappaCategoriaArticolo[] $righeShop */$righeShop = $ritornoRighe->righe;/** @var RitornoRigheShop */$ritornoRigheCasuale = $recuperoDati->recuperaRigheShop(null, 0, 25, $request->getLocale(), $codiceCliente, null, $this->servizi->OttieniUtenteCorrente(), false, true, false, true, false);// RECUPERO LISTA CATEGORIE/** @var MappaCategoriaArticolo|null $mappaIdentificata */$mappaIdentificata = null;if (count($righeShop) > 0){$mappaIdentificata = $righeShop[0];}$categoria_1 = ''; $categoria_2 = ''; $categoria_3 = ''; $categoria_4 = ''; $categoria_5 = '';if ($mappaIdentificata){$categoria_1 = str_replace("£-£", "/", $mappaIdentificata->categoria1 ? $mappaIdentificata->categoria1->categoriaInLingua->nomeUnivoco : '');$categoria_2 = str_replace("£-£", "/", $mappaIdentificata->categoria2 ? $mappaIdentificata->categoria2->categoriaInLingua->nomeUnivoco : '');$categoria_3 = str_replace("£-£", "/", $mappaIdentificata->categoria3 ? $mappaIdentificata->categoria3->categoriaInLingua->nomeUnivoco : '');$categoria_4 = str_replace("£-£", "/", $mappaIdentificata->categoria4 ? $mappaIdentificata->categoria4->categoriaInLingua->nomeUnivoco : '');$categoria_5 = str_replace("£-£", "/", $mappaIdentificata->categoria5 ? $mappaIdentificata->categoria5->categoriaInLingua->nomeUnivoco : '');}//POSSIBILI VARIANTI DISPONIBILI$variantiDisponibili = array("1" => array(),"2" => array(),"3" => array(),"4" => array(),"5" => array());if ($mappaIdentificata && count($mappaIdentificata->varianti) > 0){foreach ($mappaIdentificata->varianti as $var){if ($var->varianteInLingua){$var = $var->varianteInLingua;}$uno = (string)$var->codiceDimensione1 . "£££" . (string)$var->descrizioneDimensione1;$due = (string)$var->codiceDimensione2 . "£££" . (string)$var->descrizioneDimensione2;$tre = (string)$var->codiceDimensione3 . "£££" . (string)$var->descrizioneDimensione3;$quattro = (string)$var->codiceDimensione4 . "£££" . (string)$var->descrizioneDimensione4;$cinque = (string)$var->codiceDimensione5 . "£££" . (string)$var->descrizioneDimensione5;if (!in_array($uno, $variantiDisponibili["1"]) && $var->codiceDimensione1 != ''){array_push($variantiDisponibili["1"], $uno);}if (!in_array($due, $variantiDisponibili["2"]) && $var->codiceDimensione2 != ''){array_push($variantiDisponibili["2"], $due);}if (!in_array($tre, $variantiDisponibili["3"]) && $var->codiceDimensione3 != ''){array_push($variantiDisponibili["3"], $tre);}if (!in_array($quattro, $variantiDisponibili["4"]) && $var->codiceDimensione4 != ''){array_push($variantiDisponibili["4"], $quattro);}if (!in_array($cinque, $variantiDisponibili["5"]) && $var->codiceDimensione5 != ''){array_push($variantiDisponibili["5"], $cinque);}}}$filtro = new ContenitoreCategoriePerFiltri();/** @var $categorie AlberoCategorie[] */$listaCategorie = $recuperoDati->recuperaAlberoCategorie($filtro, $request->getLocale(), $filtroRiferimento);$listaCategorieChiaviParent = array();foreach ($listaCategorie as $lc){if($lc->parent){$_lc_id = $lc->parent->id;if (key_exists($_lc_id, $listaCategorieChiaviParent)){array_push($listaCategorieChiaviParent[$_lc_id], $lc);}else{$listaCategorieChiaviParent[$_lc_id] = array($lc);}}}$response = $this->render('ZZ_front_end/shop/dettaglio_prodotto/shop_comune_dettaglio_prodotto.html.twig', array(Costanti::T_LISTA_CATEGORIE => $listaCategorie,Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT => $listaCategorieChiaviParent,Costanti::T_DETTAGLIO_ARTICOLO_IDENTIFICATO => $mappaIdentificata,Costanti::T_MAPPA_IDENTIFICATA => $mappaIdentificata,Costanti::T_ASSOCIAZIONE_ATTRIBUTI => ($mappaIdentificata ? $mappaIdentificata->associazioneAttributi : array()),Costanti::T_RIGHE_SHOP => $righeShop,Costanti::T_ATTRIBUTI => $ritornoRighe->attributi,Costanti::T_CODICE_CLIENTE_IDENTIFICATO => $codiceCliente,'variantiDisponibili' => $variantiDisponibili,Costanti::T_RIGHE_SHOP_CASUALI => $ritornoRigheCasuale->righe,Costanti::T_PAGINA_CORRENTE => 1,Costanti::T_NUMERO_PAGINE => 1,'cat1' => $categoria_1,'cat2' => $categoria_2,'cat3' => $categoria_3,'cat4' => $categoria_4,'cat5' => $categoria_5,Costanti::CATEGORIA_1_DB => ($mappaIdentificata ? ($mappaIdentificata->categoria1 ? $mappaIdentificata->categoria1 : null) : null),Costanti::CATEGORIA_2_DB => ($mappaIdentificata ? ($mappaIdentificata->categoria2 ? $mappaIdentificata->categoria2 : null) : null),Costanti::CATEGORIA_3_DB => ($mappaIdentificata ? ($mappaIdentificata->categoria3 ? $mappaIdentificata->categoria3 : null) : null),Costanti::CATEGORIA_4_DB => ($mappaIdentificata ? ($mappaIdentificata->categoria4 ? $mappaIdentificata->categoria4 : null) : null),Costanti::CATEGORIA_5_DB => ($mappaIdentificata ? ($mappaIdentificata->categoria5 ? $mappaIdentificata->categoria5 : null) : null),));/*$response->setCache(array('max_age' => 604800,'s_maxage' => 604800,'public' => true));*/return $response;}}