src/Controller/ComparateurController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Order\OrderLineColor;
  4. use App\Form\Cart\AddToCartType;
  5. use App\Manager\CartManager;
  6. use App\Repository\CategorieRepository;
  7. use App\Repository\CouleurRepository;
  8. use App\Repository\ProduitRelatedVersionRepository;
  9. use App\Repository\ProduitRepository;
  10. use App\Services\FilterProductService;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. class ComparateurController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("/comparateur/{idProduit}", name="app_comparateur")
  20.      */
  21.     public function index(Request $requestProduitRepository $produitRepositoryCartManager $cartManagerCouleurRepository $couleurRepository$idProduit=null): Response
  22.     {
  23.         $session $request->getSession();
  24.         $sessionMessage $session->get("message");
  25.         $sessionMessageExisted $session->get("messageExisted");
  26.         $session->set("message",false);
  27.         $session->set("messageExisted",false);
  28.         $productCompare $session->get('produitCompar', []);
  29.         $countProduct count($productCompare);
  30.         $rest 3-$countProduct;
  31.         $comparator true;
  32.         $valueRender = [
  33.             'comparator' => $comparator,
  34.             'compar_products' => $productCompare,
  35.             'count_product' => $countProduct,
  36.             'rest_add' => $rest,
  37.             'message' => $sessionMessage,
  38.             'message_existed' => $sessionMessageExisted,
  39.             'form' => []
  40.         ];
  41.         $form $this->createForm(AddToCartType::class);
  42.         $form->handleRequest($request);
  43.         if ($form->isSubmitted() && $form->isValid()) {
  44.             $product $produitRepository->find($idProduit);
  45. //            dd("ok");
  46.             if ($product){
  47.                 $item $form->getData();
  48.                 $item->setProduit($product);
  49.                 $color $request->request->get('color');
  50.                 if(!empty($color)){
  51.                     $color $couleurRepository->findOneById($color);
  52.                     $item_color = new OrderLineColor();
  53.                     $item_color->setColor($color);
  54.                     $item_color->setPriceTtc($color->getPriceTtc());
  55.                     $item_color->setPriceHt($color->getPriceHt());
  56.                     $item_color->setDescription($color->getName());
  57.                     $item->setOrderLineColor($item_color);
  58.                 }
  59.                 $cart $cartManager->getCurrentCart();
  60.                 $cart
  61.                     ->addOrderLine($item)
  62.                     ->setUpdatedAt(new \DateTime());
  63.                 $cartManager->save($cart);
  64.                 return $this->redirectToRoute('app.cart.list');
  65.             }
  66.         }
  67.         for ($i=0$i<$countProduct$i++){
  68.             $url $this->generateUrl("app_comparateur", ["idProduit"=>$productCompare[$i]["idProduit"]]);
  69.             $valueRender["form"][] = ["url"=>$url,"form"=>$form->createView()];
  70.         }
  71.         //obtenir les clées communes pour afficher les caractéristiques qui ont des valeurs et qui sont active sur l'ensemble des produits des comparateurs.
  72.         $caracteristics_aff = [];
  73.         $total_produits sizeof($valueRender['compar_products']);
  74.         $intersection = [];
  75.         if($total_produits ){
  76.             $keys_0 $valueRender['compar_products'][0]['caracteristiques'];
  77.             $keys_1 $valueRender['compar_products'][1]['caracteristiques'];
  78.             $intersection array_intersect_key($keys_0$keys_1);
  79.         }
  80.       
  81.         if($total_produits ){
  82.             $keys_0 $valueRender['compar_products'][0]['caracteristiques'];
  83.             $keys_1 $valueRender['compar_products'][1]['caracteristiques'];
  84.             $keys_2 $valueRender['compar_products'][2]['caracteristiques'];
  85.             $intersection array_intersect_key($intersection$keys_2);
  86.         }
  87.         if(!empty($intersection)){
  88.             $caracteristics_aff array_keys($intersection);
  89.         }else if(array_key_exists(0$valueRender['compar_products'])){
  90.             $caracteristics_aff array_keys($valueRender['compar_products'][0]['caracteristiques']);
  91.         }
  92.         $valueRender['caracteristics_aff'] = $caracteristics_aff;
  93.         return $this->render('comparateur/index.html.twig'$valueRender);
  94.     }
  95.     /**
  96.      * @Route("/comparateur/gamme-{id_gamme}/produit-{id_produit}", name="app_comparateur_set_list")
  97.      */
  98.     public function setList(Request $requestProduitRepository $produitRepositoryCategorieRepository $categorieRepository,ProduitRelatedVersionRepository $produitRelatedVersionRepository$id_gamme=null$id_produit=null): Response
  99.     {
  100.         $session $request->getSession();
  101.         $categorieProduit $categorieRepository->find($id_gamme);
  102.         $produit $produitRepository->find($id_produit);
  103.         if ($id_produit){
  104.             $this->setListMobile($request$produitRepositorynullnull$id_produit);
  105.         }
  106.         $caractProduct $produitRepository->find(["id"=>$id_produit])->getProduitRelatedVersions()->toArray();
  107.         if ($caractProduct){
  108.             $caracteristic $caractProduct[0] ? $caractProduct[0] : [];
  109.         }else{
  110.             $caracteristic = [];
  111.         }
  112.         if ($caracteristic){
  113.             $allCaracteristiques = [];
  114.             if($caracteristic->isAffGamme()){
  115.                 $allCaracteristiques['gamme'] = $caracteristic->getGamme();
  116.             }
  117.             if($caracteristic->isAffCapaciteSpa()){
  118.                 $allCaracteristiques['capaciteSpa'] = $caracteristic->getCapaciteSpa();
  119.             }
  120.             if($caracteristic->isAffPlacesAssis()){
  121.                 $allCaracteristiques['places_assis'] = $caracteristic->getPlacesAssis();
  122.             }
  123.             if($caracteristic->isAffPlacesAllonge()){
  124.                 $allCaracteristiques['places_allonge'] = $caracteristic->getPlacesAllonge();
  125.             }
  126.              if($caracteristic->isAffPlaceSemiAllonges()){
  127.                 $allCaracteristiques['places_semiallonge'] = $caracteristic->getPlaceSemiAllonges();
  128.             }
  129.              if($caracteristic->isAffPlaceLevitation()){
  130.                 $allCaracteristiques['places_levitation'] = $caracteristic->getPlaceLevitation();
  131.             }
  132.             if($caracteristic->isAffAppuisTete()){
  133.                 $allCaracteristiques['appuis_tete'] = $caracteristic->getAppuisTete();
  134.             }
  135.             if($caracteristic->isAffConditionnement()){
  136.                 $allCaracteristiques['conditionnement'] = $caracteristic->getConditionnement();
  137.             }
  138.             if($caracteristic->isAffDimensions()){
  139.                 $allCaracteristiques['dimensions'] = $caracteristic->getDimensions();
  140.             }
  141.             if($caracteristic->isAffVolume()){
  142.                 $allCaracteristiques['volume'] = $caracteristic->getVolume();
  143.             }
  144.             if($caracteristic->isAffPoids()){
  145.                 $allCaracteristiques['poids'] = $caracteristic->getPoids();
  146.             }
  147.             
  148.             if($caracteristic->isAffJetsTherapie()){
  149.                 $allCaracteristiques['jetsTherapie'] = $caracteristic->getJetsTherapie();
  150.             }
  151.             if($caracteristic->isAffJetsAir()){
  152.                 $allCaracteristiques['jetsAir'] = $caracteristic->getJetsAir();
  153.             }
  154.             if($caracteristic->isAffJetsEau()){
  155.                 $allCaracteristiques['jetsEau'] = $caracteristic->getJetsEau();
  156.             }
  157.             if($caracteristic->isAffFinitionBuses()){
  158.                 $allCaracteristiques['finitionBuses'] = $caracteristic->getFinitionBuses();
  159.             }
  160.             if($caracteristic->isAffEnceinteAvecLeds()){
  161.                 $allCaracteristiques['enceinteAvecLeds'] = $caracteristic->isEnceinteAvecLeds();
  162.             }
  163.             if($caracteristic->isAffEnceinteSansLeds()){
  164.                 $allCaracteristiques['enceinteSansLeds'] = $caracteristic->isEnceinteSansLeds();
  165.             }
  166.             if($caracteristic->isAffPompePressionWhirlpool()){
  167.                 $allCaracteristiques['pompePressionWhirlpool'] = $caracteristic->translate()->getPompePressionWhirlpool();
  168.             }
  169.             if($caracteristic->isAffPompeFiltrationWhirlpool()){
  170.                 $allCaracteristiques['pompeFiltrationWhirlpool'] = $caracteristic->translate()->getPompeFiltrationWhirlpool();
  171.             }
  172.             if($caracteristic->isAffPompesAAir()){
  173.                 $allCaracteristiques['pompesAAir'] = $caracteristic->translate()->getPompesAAir();
  174.             }
  175.             if($caracteristic->isAffPuissanceRechauffeur()){
  176.                 $allCaracteristiques['rechauffeurs'] = $caracteristic->translate()->getPuissanceRechauffeur();
  177.             }
  178.             if($caracteristic->isAffgrosSpotLeds()){
  179.                 $allCaracteristiques['grosSpotLeds'] = $caracteristic->getGrosSpotLeds();
  180.             }
  181.             if($caracteristic->isAffLedChromaPeripherique()){
  182.                 $allCaracteristiques['ledChromaPeripherique'] = $caracteristic->getLedChromaPeripherique();
  183.             }
  184.             if($caracteristic->isAffJetsMassageCervical()){
  185.                 $allCaracteristiques['jetsMassageCervical'] = $caracteristic->isJetsMassageCervical();
  186.             }
  187.             if($caracteristic->isAffCascadeLeds()){
  188.                 $allCaracteristiques['cascadeLeds'] = $caracteristic->isCascadeLeds();
  189.             }
  190.             if($caracteristic->isAffCascadeNonLeds()){
  191.                 $allCaracteristiques['cascadeNonLeds'] = $caracteristic->isCascadeNonLeds();
  192.             }
  193.             if($caracteristic->isAffColonneEauLumineuse()){
  194.                 $allCaracteristiques['colonneEauLeds'] = $caracteristic->getColonneEauLumineuse();
  195.             }
  196.             if($caracteristic->isAffAngleLeds()){
  197.                 $allCaracteristiques['angleLeds'] = $caracteristic->isAngleLeds();
  198.             }
  199.             if($caracteristic->isAffAromatherapie()){
  200.                 $allCaracteristiques['aromatherapie'] = $caracteristic->isAromatherapie();
  201.             }
  202.             if($caracteristic->isAffTurboJetsMollets()){
  203.                 $allCaracteristiques['turboJetsMollets'] = $caracteristic->isTurboJetsMollets();
  204.             }
  205.             if($caracteristic->isAffSystemeAntigel()){
  206.                 $allCaracteristiques['systemeAntigel'] = $caracteristic->isSystemeAntigel();
  207.             }
  208.             if($caracteristic->isAffChassisInoxIndestructible()){
  209.                 $allCaracteristiques['chassisInoxIndestructible'] = $caracteristic->isChassisInoxIndestructible();
  210.             }
  211.             if($caracteristic->isAffChassisAcierGalvanise()){
  212.                 $allCaracteristiques['chassisAcierGalvanise'] = $caracteristic->isChassisAcierGalvanise();
  213.             }
  214.             if($caracteristic->isAffIsolationThermoISO14000()){
  215.                 $allCaracteristiques['isolationThermoISO14000'] = $caracteristic->translate()->getIsolationThermoISO14000();
  216.             }
  217.             if($caracteristic->isAffSocleIsolationThermique()){
  218.                 $allCaracteristiques['socleIsolationThermique'] = $caracteristic->isSocleIsolationThermique();
  219.             }
  220.             if($caracteristic->isAffRadio()){
  221.                 $allCaracteristiques['radio'] = $caracteristic->isRadio();
  222.             }
  223.             if($caracteristic->isAffBluetooth()){
  224.                 $allCaracteristiques['bluetooth'] = $caracteristic->isBluetooth();
  225.             }
  226.             if($caracteristic->isAffCommandeADistance()){
  227.                 $allCaracteristiques['commandeADistance'] = $caracteristic->translate()->getCommandeADistance();
  228.             }
  229.             if($caracteristic->isAffWifi()){
  230.                 $allCaracteristiques['wifi'] = $caracteristic->isWifi();
  231.             }
  232.             if($caracteristic->isAffNuageLedSole()){
  233.                 $allCaracteristiques['nuageLedSole'] = $caracteristic->isNuageLedSole();
  234.             }
  235.             if($caracteristic->isAffSpotArcEnCiel()){
  236.                 $allCaracteristiques['spotArcEnCiel'] = $caracteristic->isSpotArcEnCiel();
  237.             }
  238.             if($caracteristic->isAffFontaineEauLumineuse()){
  239.                 $allCaracteristiques['fontaineEauLumineuse'] = $caracteristic->getFontaineEauLumineuse();
  240.             }
  241.              if($caracteristic->isAffPrixPublicConseille()){
  242.                 $allCaracteristiques['prixPublicConseille'] = $caracteristic->getPrixPublicConseille();
  243.             }
  244.             /*$allCaracteristiques = [
  245.                 "places" => $caracteristic->getCapaciteSpa(),
  246.                 "dimensions" => $caracteristic->getDimensions(),
  247.                 "conditionnement" => $caracteristic->getConditionnement(),
  248.                 "volume" => $caracteristic->getVolume(),
  249.                 "poids" => $caracteristic->getPoids(),
  250.                 "jetsTherapie" => $caracteristic->getJetsTherapie(),
  251.                 "finition" => $produit->getFinition()->getName(),
  252.                 'radio' => $caracteristic->isRadio(),
  253.                 'tablette' => $caracteristic->getTablette(),
  254.                 'enceinte' => $caracteristic->getEnceinte(),
  255.                 'grosSpotLedChromo' => $caracteristic->getGrosSpotLeds(),
  256.                 'cascadeLed' => $caracteristic->getCascadeLed(),
  257.                 'aromatherapie' => $caracteristic->isAromatherapie(),
  258.                 'skimmer' => $caracteristic->isSkimmer(),
  259.                 'ozonateur' => $caracteristic->isOzonateur(),
  260.                 'systemeAntigel' => $caracteristic->isSystemeAntigel(),
  261.                 'chassisInoxIndestructible' => $caracteristic->isChassisInoxIndestructible(),
  262.                // 'garantie' => $caracteristic->getGarantie(),
  263.                 'volts' => $caracteristic->getVolts(),
  264.             ];*/
  265.         }else{
  266.             $allCaracteristiques = [
  267.                 "places" => null,
  268.                 "dimensions" => null,
  269.                 "conditionnement" => null,
  270.                 "volume" => null,
  271.                 "poids" => null,
  272.                 "jetsTherapie" => null,
  273.                 "finition" => null,
  274.                 'radio' => null,
  275.                 'tablette' => null,
  276.                 'enceinte' => null,
  277.                 'grosSpotLedChromo' => null,
  278.                 'cascadeLed' => null,
  279.                 'aromatherapie' => null,
  280.                 'skimmer' => null,
  281.                 'ozonateur' => null,
  282.                 'systemeAntigel' => null,
  283.                 'chassisInoxIndestructible' => null,
  284.                 'garantie' => null,
  285.                 'volts' => null,
  286.             ];
  287.         }
  288.         $filters $session->get('produitCompar', []);
  289.         if (count($filters) == 3){
  290.             $session->set("message",true);
  291.             return $this->redirectToRoute("app_comparateur");
  292.         }
  293.         $produitExistedInComparator false;
  294.         for ($i=0$i<count($filters); $i++){
  295.             if ($filters[$i]["idProduit"] == $id_produit){
  296.                 $produitExistedInComparator true;
  297.             }
  298.         }
  299.         if ($produitExistedInComparator){
  300.             $session->set("messageExisted",true);
  301.             return $this->redirectToRoute("app_comparateur");
  302.         }
  303.         $note $produit->getNoteClientOfOneProduct($produit->getAvisClients());
  304.         $newProduct array_merge($filters, [[
  305.             'idProduit' => $produit->getId(),
  306.             'categorie'=>$categorieProduit,
  307.             'nomProduit' => $produit->translate($request->getLocale())->getName(),
  308.             'produit' => $produit,
  309.             'note' => $note,
  310.             'caracteristiques' => $allCaracteristiques,
  311.         ]]);
  312.         $session->set('produitCompar'$newProduct);
  313.         return $this->redirectToRoute("app_comparateur");
  314.     }
  315.     /**
  316.      * @Route("/comparateur/supprimer/list/", name="app_comparateur_del_list")
  317.      */
  318.     public function removeAllList(Request $request){
  319.         $session $request->getSession();
  320.         $session->remove("produitCompar");
  321.         return $this->redirectToRoute("app_comparateur");
  322.     }
  323.     /**
  324.      * @Route("/comparateur/supprimer-list/{id_prod}", name="app_comparateur_del_one_in_list")
  325.      */
  326.     public function removeOneInList(Request $request$id_prod=null){
  327.         $session $request->getSession();
  328.         $filters $session->get('produitCompar', []);
  329.         $newArrayFilters = [];
  330.         foreach ($filters as $f){
  331.             if ($f["idProduit"] != $id_prod){
  332.                 $newArrayFilters[] = $f;
  333.             }
  334.         }
  335.         $session->set('produitCompar'$newArrayFilters);
  336.         return $this->redirectToRoute("app_comparateur");
  337.     }
  338.     /**
  339.      * @Route("/comparateur/filtre/produit/{idProduit}", name="app_comparateur_filtre_produit")
  340.      */
  341.     public function comparatorFilterProduct(Request $requestProduitRepository $produitRepositoryFilterProductService $filterProductServiceCategorieRepository $categorieRepositoryCartManager $cartManagerCouleurRepository $couleurRepository$idProduit=null){
  342.         $form $this->createForm(AddToCartType::class);
  343.         $form->handleRequest($request);
  344.         if ($form->isSubmitted() && $form->isValid()) {
  345.             $product $produitRepository->find($idProduit);
  346.             if ($product){
  347.                 $item $form->getData();
  348.                 $item->setProduit($product);
  349.                 $color $request->request->get('color');
  350.                 if(!empty($color)){
  351.                     $color $couleurRepository->findOneById($color);
  352.                     $item_color = new OrderLineColor();
  353.                     $item_color->setColor($color);
  354.                     $item_color->setPriceTtc($color->getPriceTtc());
  355.                     $item_color->setPriceHt($color->getPriceHt());
  356.                     $item_color->setDescription($color->getName());
  357.                     $item->setOrderLineColor($item_color);
  358.                 }
  359.                 $cart $cartManager->getCurrentCart();
  360.                 $cart
  361.                     ->addOrderLine($item)
  362.                     ->setUpdatedAt(new \DateTime());
  363.                 $cartManager->save($cart);
  364.                 return $this->redirectToRoute('app.cart.list');
  365.             }
  366.         }
  367.         $nbrPlace $filterProductService->getPlaces($request->request->get("nbrPlaces"));
  368.         $budget $filterProductService->getBudgets($request->request->get("budget"));
  369.         $p $produitRepository->findOneByIdJoinedToCategory($budget[0], $budget[1], $nbrPlace[0], $nbrPlace[1]);
  370.         $session $request->getSession();
  371.         $session->set('produitComparMobil', []);
  372.         $forms = [];
  373.         for ($i=0$i<count($p); $i++){
  374.             $this->setListMobile($request$produitRepository$categorieRepositorynull$p[$i]->getId());
  375.             $url $this->generateUrl("app_comparateur_filtre_produit", ["idProduit"=>$p[$i]->getId()]);
  376.             /*$valueRender["form"][] = ["url"=>$url,"form"=>$form->createView()];*/
  377.             $forms[] = ["url"=>$url,"form"=>$form->createView()];
  378.         }
  379.         
  380.         $productCompare $session->get('produitComparMobil', []);
  381.         $valueRender = [
  382.             "prod"=>$p,
  383.             "compar_products" => $productCompare,
  384.             "form" => $forms,
  385.         ];
  386.         //obtenir les clées communes pour afficher les caractéristiques qui ont des valeurs et qui sont active sur l'ensemble des produits des comparateurs.
  387.         $caracteristics_aff = [];
  388.         $total_produits sizeof($valueRender['compar_products']);
  389.         $intersection = [];
  390.         /*if($total_produits > 1 ){
  391.             $keys_0 = $valueRender['compar_products'][0]['caracteristiques'];
  392.             $keys_1 = $valueRender['compar_products'][1]['caracteristiques'];
  393.             $intersection = array_intersect_key($keys_0, $keys_1);
  394.         }
  395.         if($total_produits > 2 ){
  396.             $keys_0 = $valueRender['compar_products'][0]['caracteristiques'];
  397.             $keys_1 = $valueRender['compar_products'][1]['caracteristiques'];
  398.             $keys_2 = $valueRender['compar_products'][2]['caracteristiques'];
  399.             $intersection = array_intersect_key($intersection, $keys_2);
  400.         }*/
  401.         if(!empty($intersection)){
  402.             $caracteristics_aff array_keys($intersection);
  403.         }else if(array_key_exists(0$valueRender['compar_products'])){
  404.             $caracteristics_aff array_keys($valueRender['compar_products'][0]['caracteristiques']);
  405.         }
  406.         $valueRender['caracteristics_aff'] = $caracteristics_aff;
  407.         $v $this->renderView("comparateur/partial/_product.html.twig"$valueRender);
  408.         return new Response($v);
  409.     }
  410.     public function setListMobile($request$produitRepository$categorieRepository$id_gamme=null$id_produit=null): bool
  411.     {
  412.         /*$categorieProduit = $categorieRepository->find($id_gamme);*/
  413.         
  414.         $produit $produitRepository->find($id_produit);
  415.         $categ $produit->getCategories()->toArray();
  416.         $categorieProduit $categ[0]->getSousCategorie();
  417.         $caractProduct $produitRepository->find(["id"=>$id_produit])->getProduitRelatedVersions()->toArray();
  418.         if ($caractProduct){
  419.             $caracteristic $caractProduct[0] ? $caractProduct[0] : [];
  420.         }else{
  421.             $caracteristic = [];
  422.         }
  423.         if ($caracteristic){
  424.             $allCaracteristiques = [];
  425.             if($caracteristic->isAffGamme()){
  426.                 $allCaracteristiques['gamme'] = $caracteristic->getGamme();
  427.             }
  428.             if($caracteristic->isAffCapaciteSpa()){
  429.                 $allCaracteristiques['capaciteSpa'] = $caracteristic->getCapaciteSpa();
  430.             }
  431.             if($caracteristic->isAffPlacesAssis()){
  432.                 $allCaracteristiques['places_assis'] = $caracteristic->getPlacesAssis();
  433.             }
  434.             if($caracteristic->isAffPlacesAllonge()){
  435.                 $allCaracteristiques['places_allonge'] = $caracteristic->getPlacesAllonge();
  436.             }
  437.             if($caracteristic->isAffAppuisTete()){
  438.                 $allCaracteristiques['appuis_tete'] = $caracteristic->getAppuisTete();
  439.             }
  440.             if($caracteristic->isAffConditionnement()){
  441.                 $allCaracteristiques['conditionnement'] = $caracteristic->getConditionnement();
  442.             }
  443.             if($caracteristic->isAffDimensions()){
  444.                 $allCaracteristiques['dimensions'] = $caracteristic->getDimensions();
  445.             }
  446.             if($caracteristic->isAffVolume()){
  447.                 $allCaracteristiques['volume'] = $caracteristic->getVolume();
  448.             }
  449.             if($caracteristic->isAffPoids()){
  450.                 $allCaracteristiques['poids'] = $caracteristic->getPoids();
  451.             }
  452.             if($caracteristic->isAffJetsTherapie()){
  453.                 $allCaracteristiques['jetsTherapie'] = $caracteristic->getJetsTherapie();
  454.             }
  455.             if($caracteristic->isAffJetsAir()){
  456.                 $allCaracteristiques['jetsAir'] = $caracteristic->getJetsAir();
  457.             }
  458.             if($caracteristic->isAffJetsEau()){
  459.                 $allCaracteristiques['jetsEau'] = $caracteristic->getJetsEau();
  460.             }
  461.             if($caracteristic->isAffFinitionBuses()){
  462.                 $allCaracteristiques['finitionBuses'] = $caracteristic->getFinitionBuses();
  463.             }
  464.             if($caracteristic->isAffEnceinteAvecLeds()){
  465.                 $allCaracteristiques['enceinteAvecLeds'] = $caracteristic->isEnceinteAvecLeds();
  466.             }
  467.             if($caracteristic->isAffEnceinteSansLeds()){
  468.                 $allCaracteristiques['enceinteSansLeds'] = $caracteristic->isEnceinteSansLeds();
  469.             }
  470.             if($caracteristic->isAffPompePressionWhirlpool()){
  471.                 $allCaracteristiques['pompePressionWhirlpool'] = $caracteristic->translate()->getPompePressionWhirlpool();
  472.             }
  473.             if($caracteristic->isAffPompeFiltrationWhirlpool()){
  474.                 $allCaracteristiques['pompeFiltrationWhirlpool'] = $caracteristic->translate()->getPompeFiltrationWhirlpool();
  475.             }
  476.             if($caracteristic->isAffPompesAAir()){
  477.                 $allCaracteristiques['pompesAAir'] = $caracteristic->translate()->getPompesAAir();
  478.             }
  479.             if($caracteristic->isAffPuissanceRechauffeur()){
  480.                 $allCaracteristiques['rechauffeurs'] = $caracteristic->translate()->getPuissanceRechauffeur();
  481.             }
  482.             if($caracteristic->isAffgrosSpotLeds()){
  483.                 $allCaracteristiques['grosSpotLeds'] = $caracteristic->getGrosSpotLeds();
  484.             }
  485.             if($caracteristic->isAffLedChromaPeripherique()){
  486.                 $allCaracteristiques['ledChromaPeripherique'] = $caracteristic->getLedChromaPeripherique();
  487.             }
  488.             if($caracteristic->isAffJetsMassageCervical()){
  489.                 $allCaracteristiques['jetsMassageCervical'] = $caracteristic->isJetsMassageCervical();
  490.             }
  491.             if($caracteristic->isAffCascadeLeds()){
  492.                 $allCaracteristiques['cascadeLeds'] = $caracteristic->isCascadeLeds();
  493.             }
  494.             if($caracteristic->isAffCascadeNonLeds()){
  495.                 $allCaracteristiques['cascadeNonLeds'] = $caracteristic->isCascadeNonLeds();
  496.             }
  497.             if($caracteristic->isAffColonneEauLumineuse()){
  498.                 $allCaracteristiques['colonneEauLeds'] = $caracteristic->getColonneEauLumineuse();
  499.             }
  500.             if($caracteristic->isAffAngleLeds()){
  501.                 $allCaracteristiques['angleLeds'] = $caracteristic->isAngleLeds();
  502.             }
  503.             if($caracteristic->isAffAromatherapie()){
  504.                 $allCaracteristiques['aromatherapie'] = $caracteristic->isAromatherapie();
  505.             }
  506.             if($caracteristic->isAffTurboJetsMollets()){
  507.                 $allCaracteristiques['turboJetsMollets'] = $caracteristic->isTurboJetsMollets();
  508.             }
  509.             if($caracteristic->isAffSystemeAntigel()){
  510.                 $allCaracteristiques['systemeAntigel'] = $caracteristic->isSystemeAntigel();
  511.             }
  512.             if($caracteristic->isAffChassisInoxIndestructible()){
  513.                 $allCaracteristiques['chassisInoxIndestructible'] = $caracteristic->isChassisInoxIndestructible();
  514.             }
  515.             if($caracteristic->isAffChassisAcierGalvanise()){
  516.                 $allCaracteristiques['chassisAcierGalvanise'] = $caracteristic->isChassisAcierGalvanise();
  517.             }
  518.             if($caracteristic->isAffIsolationThermoISO14000()){
  519.                 $allCaracteristiques['isolationThermoISO14000'] = $caracteristic->translate()->getIsolationThermoISO14000();
  520.             }
  521.             if($caracteristic->isAffSocleIsolationThermique()){
  522.                 $allCaracteristiques['socleIsolationThermique'] = $caracteristic->isSocleIsolationThermique();
  523.             }
  524.             if($caracteristic->isAffRadio()){
  525.                 $allCaracteristiques['radio'] = $caracteristic->isRadio();
  526.             }
  527.             if($caracteristic->isAffBluetooth()){
  528.                 $allCaracteristiques['bluetooth'] = $caracteristic->isBluetooth();
  529.             }
  530.             if($caracteristic->isAffCommandeADistance()){
  531.                 $allCaracteristiques['commandeADistance'] = $caracteristic->translate()->getCommandeADistance();
  532.             }
  533.             if($caracteristic->isAffWifi()){
  534.                 $allCaracteristiques['wifi'] = $caracteristic->isWifi();
  535.             }
  536.             if($caracteristic->isAffNuageLedSole()){
  537.                 $allCaracteristiques['nuageLedSole'] = $caracteristic->isNuageLedSole();
  538.             }
  539.             if($caracteristic->isAffSpotArcEnCiel()){
  540.                 $allCaracteristiques['spotArcEnCiel'] = $caracteristic->isSpotArcEnCiel();
  541.             }
  542.             if($caracteristic->isAffFontaineEauLumineuse()){
  543.                 $allCaracteristiques['fontaineEauLumineuse'] = $caracteristic->getFontaineEauLumineuse();
  544.             }
  545.             if($caracteristic->isAffPrixPublicConseille()){
  546.                 $allCaracteristiques['prixPublicConseille'] = $caracteristic->getPrixPublicConseille();
  547.             }
  548.             /*$allCaracteristiques = [
  549.                 "places" => $caracteristic->getCapaciteSpa(),
  550.                 "dimensions" => $caracteristic->getDimensions(),
  551.                 "conditionnement" => $caracteristic->getConditionnement(),
  552.                 "volume" => $caracteristic->getVolume(),
  553.                 "poids" => $caracteristic->getPoids(),
  554.                 "jetsTherapie" => $caracteristic->getJetsTherapie(),
  555.                 "finition" => $produit->getFinition()->getName(),
  556.                 'radio' => $caracteristic->isRadio(),
  557.                 'tablette' => $caracteristic->getTablette(),
  558.                 'enceinte' => $caracteristic->getEnceinte(),
  559.                 'grosSpotLedChromo' => $caracteristic->getGrosSpotLeds(),
  560.                 'cascadeLed' => $caracteristic->getCascadeLed(),
  561.                 'aromatherapie' => $caracteristic->isAromatherapie(),
  562.                 'skimmer' => $caracteristic->isSkimmer(),
  563.                 'ozonateur' => $caracteristic->isOzonateur(),
  564.                 'systemeAntigel' => $caracteristic->isSystemeAntigel(),
  565.                 'chassisInoxIndestructible' => $caracteristic->isChassisInoxIndestructible(),
  566.                // 'garantie' => $caracteristic->getGarantie(),
  567.                 'volts' => $caracteristic->getVolts(),
  568.             ];*/
  569.         }else{
  570.             $allCaracteristiques = [
  571.                 "places" => null,
  572.                 "dimensions" => null,
  573.                 "conditionnement" => null,
  574.                 "volume" => null,
  575.                 "poids" => null,
  576.                 "jetsTherapie" => null,
  577.                 "finition" => null,
  578.                 'radio' => null,
  579.                 'tablette' => null,
  580.                 'enceinte' => null,
  581.                 'grosSpotLedChromo' => null,
  582.                 'cascadeLed' => null,
  583.                 'aromatherapie' => null,
  584.                 'skimmer' => null,
  585.                 'ozonateur' => null,
  586.                 'systemeAntigel' => null,
  587.                 'chassisInoxIndestructible' => null,
  588.                 'garantie' => null,
  589.                 'volts' => null,
  590.             ];
  591.         }
  592.         $session $request->getSession();
  593.         $filters $session->get('produitComparMobil', []);
  594.         $note $produit->getNoteClientOfOneProduct($produit->getAvisClients());
  595.         $newProduct array_merge($filters, [[
  596.             'idProduit' => $produit->getId(),
  597.             'categorie'=>$categorieProduit,
  598.             'nomProduit' => $produit->translate($request->getLocale())->getName(),
  599.             'produit' => $produit,
  600.             'note' => $note,
  601.             'caracteristiques' => $allCaracteristiques,
  602.         ]]);
  603.         $session->set('produitComparMobil'$newProduct);
  604.         return true;
  605.     }
  606.     /**
  607.      * @Route("/comparateur/filtre/produit/list/mobile/{idProduit}", name="app_comparateur_filtre_get_produit_list_mobile")
  608.      */
  609.     public function getProductInComparatorMobile(Request $requestProduitRepository $produitRepositoryCouleurRepository $couleurRepositoryCartManager $cartManager$idProduit null){
  610.         $form $this->createForm(AddToCartType::class);
  611.         $form->handleRequest($request);
  612.         if ($form->isSubmitted() && $form->isValid()) {
  613.             $product $produitRepository->find($idProduit);
  614.             if ($product){
  615.                 $item $form->getData();
  616.                 $item->setProduit($product);
  617.                 $color $request->request->get('color');
  618.                 if(!empty($color)){
  619.                     $color $couleurRepository->findOneById($color);
  620.                     $item_color = new OrderLineColor();
  621.                     $item_color->setColor($color);
  622.                     $item_color->setPriceTtc($color->getPriceTtc());
  623.                     $item_color->setPriceHt($color->getPriceHt());
  624.                     $item_color->setDescription($color->getName());
  625.                     $item->setOrderLineColor($item_color);
  626.                 }
  627.                 $cart $cartManager->getCurrentCart();
  628.                 $cart
  629.                     ->addOrderLine($item)
  630.                     ->setUpdatedAt(new \DateTime());
  631.                 $cartManager->save($cart);
  632.                 return $this->redirectToRoute('app.cart.list');
  633.             }
  634.         }
  635.         $session $request->getSession();
  636.         $forms = [];
  637. //        $session->set('produitComparMobil', []);
  638.         $filters $session->get('produitComparMobil', []);
  639.         for ($i=0$i<count($filters); $i++){
  640.             $url $this->generateUrl("app_comparateur_filtre_produit", ["idProduit"=>$filters[$i]["idProduit"]]);
  641.             $forms[] = ["url"=>$url,"form"=>$form->createView()];
  642.         }
  643.         $productCompare $session->get('produitComparMobil', []);
  644.         $valueRender = [
  645.             "prod"=>$filters,
  646.             "compar_products" => $productCompare,
  647.             "form" => $forms,
  648.         ];
  649.         //obtenir les clées communes pour afficher les caractéristiques qui ont des valeurs et qui sont active sur l'ensemble des produits des comparateurs.
  650.         $caracteristics_aff = [];
  651.         $intersection = [];
  652.         if(!empty($intersection)){
  653.             $caracteristics_aff array_keys($intersection);
  654.         }else if(array_key_exists(0$valueRender['compar_products'])){
  655.             $caracteristics_aff array_keys($valueRender['compar_products'][0]['caracteristiques']);
  656.         }
  657.         $valueRender['caracteristics_aff'] = $caracteristics_aff;
  658.         $v $this->renderView("comparateur/partial/_product.html.twig"$valueRender);
  659.         return new Response($v);
  660.     }
  661.     /**
  662.      * @Route("/comparateur/filtre/produit/list/mobile/modifier/resultat", name="app_comparateur_filtre_get_produit_list_mobile_modif_result")
  663.      */
  664.     public function modifyResultInitSession(Request $request){
  665.         $session $request->getSession();
  666.         $session->set('produitComparMobil', []);
  667.         return $this->redirectToRoute("app_comparateur_filtre_get_produit_list_mobile");
  668.     }
  669.     /**
  670.      * @Route("/comparateur/supprimer-list/mobil/produit/{id_prod}", name="app_comparateur_del_one_in_list_mobil")
  671.      */
  672.     public function removeOneInListMobil(Request $request$id_prod=null){
  673.         $session $request->getSession();
  674.         $filtersMobil $session->get('produitComparMobil', []);
  675.         $newArrayFiltersMobil = [];
  676.         foreach ($filtersMobil as $f){
  677.             if ($f["idProduit"] != $id_prod){
  678.                 $newArrayFiltersMobil[] = $f;
  679.             }
  680.         }
  681.         $session->set('produitComparMobil'$newArrayFiltersMobil);
  682.         return $this->redirectToRoute("app_comparateur_filtre_get_produit_list_mobile");
  683.     }
  684. }