<?php
namespace App\Controller;
use App\Entity\Order\OrderLineColor;
use App\Form\Cart\AddToCartType;
use App\Manager\CartManager;
use App\Repository\CategorieRepository;
use App\Repository\CouleurRepository;
use App\Repository\ProduitRelatedVersionRepository;
use App\Repository\ProduitRepository;
use App\Services\FilterProductService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ComparateurController extends AbstractController
{
/**
* @Route("/comparateur/{idProduit}", name="app_comparateur")
*/
public function index(Request $request, ProduitRepository $produitRepository, CartManager $cartManager, CouleurRepository $couleurRepository, $idProduit=null): Response
{
$session = $request->getSession();
$sessionMessage = $session->get("message");
$sessionMessageExisted = $session->get("messageExisted");
$session->set("message",false);
$session->set("messageExisted",false);
$productCompare = $session->get('produitCompar', []);
$countProduct = count($productCompare);
$rest = 3-$countProduct;
$comparator = true;
$valueRender = [
'comparator' => $comparator,
'compar_products' => $productCompare,
'count_product' => $countProduct,
'rest_add' => $rest,
'message' => $sessionMessage,
'message_existed' => $sessionMessageExisted,
'form' => []
];
$form = $this->createForm(AddToCartType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$product = $produitRepository->find($idProduit);
// dd("ok");
if ($product){
$item = $form->getData();
$item->setProduit($product);
$color = $request->request->get('color');
if(!empty($color)){
$color = $couleurRepository->findOneById($color);
$item_color = new OrderLineColor();
$item_color->setColor($color);
$item_color->setPriceTtc($color->getPriceTtc());
$item_color->setPriceHt($color->getPriceHt());
$item_color->setDescription($color->getName());
$item->setOrderLineColor($item_color);
}
$cart = $cartManager->getCurrentCart();
$cart
->addOrderLine($item)
->setUpdatedAt(new \DateTime());
$cartManager->save($cart);
return $this->redirectToRoute('app.cart.list');
}
}
for ($i=0; $i<$countProduct; $i++){
$url = $this->generateUrl("app_comparateur", ["idProduit"=>$productCompare[$i]["idProduit"]]);
$valueRender["form"][] = ["url"=>$url,"form"=>$form->createView()];
}
//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.
$caracteristics_aff = [];
$total_produits = sizeof($valueRender['compar_products']);
$intersection = [];
if($total_produits > 1 ){
$keys_0 = $valueRender['compar_products'][0]['caracteristiques'];
$keys_1 = $valueRender['compar_products'][1]['caracteristiques'];
$intersection = array_intersect_key($keys_0, $keys_1);
}
if($total_produits > 2 ){
$keys_0 = $valueRender['compar_products'][0]['caracteristiques'];
$keys_1 = $valueRender['compar_products'][1]['caracteristiques'];
$keys_2 = $valueRender['compar_products'][2]['caracteristiques'];
$intersection = array_intersect_key($intersection, $keys_2);
}
if(!empty($intersection)){
$caracteristics_aff = array_keys($intersection);
}else if(array_key_exists(0, $valueRender['compar_products'])){
$caracteristics_aff = array_keys($valueRender['compar_products'][0]['caracteristiques']);
}
$valueRender['caracteristics_aff'] = $caracteristics_aff;
return $this->render('comparateur/index.html.twig', $valueRender);
}
/**
* @Route("/comparateur/gamme-{id_gamme}/produit-{id_produit}", name="app_comparateur_set_list")
*/
public function setList(Request $request, ProduitRepository $produitRepository, CategorieRepository $categorieRepository,ProduitRelatedVersionRepository $produitRelatedVersionRepository, $id_gamme=null, $id_produit=null): Response
{
$session = $request->getSession();
$categorieProduit = $categorieRepository->find($id_gamme);
$produit = $produitRepository->find($id_produit);
if ($id_produit){
$this->setListMobile($request, $produitRepository, null, null, $id_produit);
}
$caractProduct = $produitRepository->find(["id"=>$id_produit])->getProduitRelatedVersions()->toArray();
if ($caractProduct){
$caracteristic = $caractProduct[0] ? $caractProduct[0] : [];
}else{
$caracteristic = [];
}
if ($caracteristic){
$allCaracteristiques = [];
if($caracteristic->isAffGamme()){
$allCaracteristiques['gamme'] = $caracteristic->getGamme();
}
if($caracteristic->isAffCapaciteSpa()){
$allCaracteristiques['capaciteSpa'] = $caracteristic->getCapaciteSpa();
}
if($caracteristic->isAffPlacesAssis()){
$allCaracteristiques['places_assis'] = $caracteristic->getPlacesAssis();
}
if($caracteristic->isAffPlacesAllonge()){
$allCaracteristiques['places_allonge'] = $caracteristic->getPlacesAllonge();
}
if($caracteristic->isAffPlaceSemiAllonges()){
$allCaracteristiques['places_semiallonge'] = $caracteristic->getPlaceSemiAllonges();
}
if($caracteristic->isAffPlaceLevitation()){
$allCaracteristiques['places_levitation'] = $caracteristic->getPlaceLevitation();
}
if($caracteristic->isAffAppuisTete()){
$allCaracteristiques['appuis_tete'] = $caracteristic->getAppuisTete();
}
if($caracteristic->isAffConditionnement()){
$allCaracteristiques['conditionnement'] = $caracteristic->getConditionnement();
}
if($caracteristic->isAffDimensions()){
$allCaracteristiques['dimensions'] = $caracteristic->getDimensions();
}
if($caracteristic->isAffVolume()){
$allCaracteristiques['volume'] = $caracteristic->getVolume();
}
if($caracteristic->isAffPoids()){
$allCaracteristiques['poids'] = $caracteristic->getPoids();
}
if($caracteristic->isAffJetsTherapie()){
$allCaracteristiques['jetsTherapie'] = $caracteristic->getJetsTherapie();
}
if($caracteristic->isAffJetsAir()){
$allCaracteristiques['jetsAir'] = $caracteristic->getJetsAir();
}
if($caracteristic->isAffJetsEau()){
$allCaracteristiques['jetsEau'] = $caracteristic->getJetsEau();
}
if($caracteristic->isAffFinitionBuses()){
$allCaracteristiques['finitionBuses'] = $caracteristic->getFinitionBuses();
}
if($caracteristic->isAffEnceinteAvecLeds()){
$allCaracteristiques['enceinteAvecLeds'] = $caracteristic->isEnceinteAvecLeds();
}
if($caracteristic->isAffEnceinteSansLeds()){
$allCaracteristiques['enceinteSansLeds'] = $caracteristic->isEnceinteSansLeds();
}
if($caracteristic->isAffPompePressionWhirlpool()){
$allCaracteristiques['pompePressionWhirlpool'] = $caracteristic->translate()->getPompePressionWhirlpool();
}
if($caracteristic->isAffPompeFiltrationWhirlpool()){
$allCaracteristiques['pompeFiltrationWhirlpool'] = $caracteristic->translate()->getPompeFiltrationWhirlpool();
}
if($caracteristic->isAffPompesAAir()){
$allCaracteristiques['pompesAAir'] = $caracteristic->translate()->getPompesAAir();
}
if($caracteristic->isAffPuissanceRechauffeur()){
$allCaracteristiques['rechauffeurs'] = $caracteristic->translate()->getPuissanceRechauffeur();
}
if($caracteristic->isAffgrosSpotLeds()){
$allCaracteristiques['grosSpotLeds'] = $caracteristic->getGrosSpotLeds();
}
if($caracteristic->isAffLedChromaPeripherique()){
$allCaracteristiques['ledChromaPeripherique'] = $caracteristic->getLedChromaPeripherique();
}
if($caracteristic->isAffJetsMassageCervical()){
$allCaracteristiques['jetsMassageCervical'] = $caracteristic->isJetsMassageCervical();
}
if($caracteristic->isAffCascadeLeds()){
$allCaracteristiques['cascadeLeds'] = $caracteristic->isCascadeLeds();
}
if($caracteristic->isAffCascadeNonLeds()){
$allCaracteristiques['cascadeNonLeds'] = $caracteristic->isCascadeNonLeds();
}
if($caracteristic->isAffColonneEauLumineuse()){
$allCaracteristiques['colonneEauLeds'] = $caracteristic->getColonneEauLumineuse();
}
if($caracteristic->isAffAngleLeds()){
$allCaracteristiques['angleLeds'] = $caracteristic->isAngleLeds();
}
if($caracteristic->isAffAromatherapie()){
$allCaracteristiques['aromatherapie'] = $caracteristic->isAromatherapie();
}
if($caracteristic->isAffTurboJetsMollets()){
$allCaracteristiques['turboJetsMollets'] = $caracteristic->isTurboJetsMollets();
}
if($caracteristic->isAffSystemeAntigel()){
$allCaracteristiques['systemeAntigel'] = $caracteristic->isSystemeAntigel();
}
if($caracteristic->isAffChassisInoxIndestructible()){
$allCaracteristiques['chassisInoxIndestructible'] = $caracteristic->isChassisInoxIndestructible();
}
if($caracteristic->isAffChassisAcierGalvanise()){
$allCaracteristiques['chassisAcierGalvanise'] = $caracteristic->isChassisAcierGalvanise();
}
if($caracteristic->isAffIsolationThermoISO14000()){
$allCaracteristiques['isolationThermoISO14000'] = $caracteristic->translate()->getIsolationThermoISO14000();
}
if($caracteristic->isAffSocleIsolationThermique()){
$allCaracteristiques['socleIsolationThermique'] = $caracteristic->isSocleIsolationThermique();
}
if($caracteristic->isAffRadio()){
$allCaracteristiques['radio'] = $caracteristic->isRadio();
}
if($caracteristic->isAffBluetooth()){
$allCaracteristiques['bluetooth'] = $caracteristic->isBluetooth();
}
if($caracteristic->isAffCommandeADistance()){
$allCaracteristiques['commandeADistance'] = $caracteristic->translate()->getCommandeADistance();
}
if($caracteristic->isAffWifi()){
$allCaracteristiques['wifi'] = $caracteristic->isWifi();
}
if($caracteristic->isAffNuageLedSole()){
$allCaracteristiques['nuageLedSole'] = $caracteristic->isNuageLedSole();
}
if($caracteristic->isAffSpotArcEnCiel()){
$allCaracteristiques['spotArcEnCiel'] = $caracteristic->isSpotArcEnCiel();
}
if($caracteristic->isAffFontaineEauLumineuse()){
$allCaracteristiques['fontaineEauLumineuse'] = $caracteristic->getFontaineEauLumineuse();
}
if($caracteristic->isAffPrixPublicConseille()){
$allCaracteristiques['prixPublicConseille'] = $caracteristic->getPrixPublicConseille();
}
/*$allCaracteristiques = [
"places" => $caracteristic->getCapaciteSpa(),
"dimensions" => $caracteristic->getDimensions(),
"conditionnement" => $caracteristic->getConditionnement(),
"volume" => $caracteristic->getVolume(),
"poids" => $caracteristic->getPoids(),
"jetsTherapie" => $caracteristic->getJetsTherapie(),
"finition" => $produit->getFinition()->getName(),
'radio' => $caracteristic->isRadio(),
'tablette' => $caracteristic->getTablette(),
'enceinte' => $caracteristic->getEnceinte(),
'grosSpotLedChromo' => $caracteristic->getGrosSpotLeds(),
'cascadeLed' => $caracteristic->getCascadeLed(),
'aromatherapie' => $caracteristic->isAromatherapie(),
'skimmer' => $caracteristic->isSkimmer(),
'ozonateur' => $caracteristic->isOzonateur(),
'systemeAntigel' => $caracteristic->isSystemeAntigel(),
'chassisInoxIndestructible' => $caracteristic->isChassisInoxIndestructible(),
// 'garantie' => $caracteristic->getGarantie(),
'volts' => $caracteristic->getVolts(),
];*/
}else{
$allCaracteristiques = [
"places" => null,
"dimensions" => null,
"conditionnement" => null,
"volume" => null,
"poids" => null,
"jetsTherapie" => null,
"finition" => null,
'radio' => null,
'tablette' => null,
'enceinte' => null,
'grosSpotLedChromo' => null,
'cascadeLed' => null,
'aromatherapie' => null,
'skimmer' => null,
'ozonateur' => null,
'systemeAntigel' => null,
'chassisInoxIndestructible' => null,
'garantie' => null,
'volts' => null,
];
}
$filters = $session->get('produitCompar', []);
if (count($filters) == 3){
$session->set("message",true);
return $this->redirectToRoute("app_comparateur");
}
$produitExistedInComparator = false;
for ($i=0; $i<count($filters); $i++){
if ($filters[$i]["idProduit"] == $id_produit){
$produitExistedInComparator = true;
}
}
if ($produitExistedInComparator){
$session->set("messageExisted",true);
return $this->redirectToRoute("app_comparateur");
}
$note = $produit->getNoteClientOfOneProduct($produit->getAvisClients());
$newProduct = array_merge($filters, [[
'idProduit' => $produit->getId(),
'categorie'=>$categorieProduit,
'nomProduit' => $produit->translate($request->getLocale())->getName(),
'produit' => $produit,
'note' => $note,
'caracteristiques' => $allCaracteristiques,
]]);
$session->set('produitCompar', $newProduct);
return $this->redirectToRoute("app_comparateur");
}
/**
* @Route("/comparateur/supprimer/list/", name="app_comparateur_del_list")
*/
public function removeAllList(Request $request){
$session = $request->getSession();
$session->remove("produitCompar");
return $this->redirectToRoute("app_comparateur");
}
/**
* @Route("/comparateur/supprimer-list/{id_prod}", name="app_comparateur_del_one_in_list")
*/
public function removeOneInList(Request $request, $id_prod=null){
$session = $request->getSession();
$filters = $session->get('produitCompar', []);
$newArrayFilters = [];
foreach ($filters as $f){
if ($f["idProduit"] != $id_prod){
$newArrayFilters[] = $f;
}
}
$session->set('produitCompar', $newArrayFilters);
return $this->redirectToRoute("app_comparateur");
}
/**
* @Route("/comparateur/filtre/produit/{idProduit}", name="app_comparateur_filtre_produit")
*/
public function comparatorFilterProduct(Request $request, ProduitRepository $produitRepository, FilterProductService $filterProductService, CategorieRepository $categorieRepository, CartManager $cartManager, CouleurRepository $couleurRepository, $idProduit=null){
$form = $this->createForm(AddToCartType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$product = $produitRepository->find($idProduit);
if ($product){
$item = $form->getData();
$item->setProduit($product);
$color = $request->request->get('color');
if(!empty($color)){
$color = $couleurRepository->findOneById($color);
$item_color = new OrderLineColor();
$item_color->setColor($color);
$item_color->setPriceTtc($color->getPriceTtc());
$item_color->setPriceHt($color->getPriceHt());
$item_color->setDescription($color->getName());
$item->setOrderLineColor($item_color);
}
$cart = $cartManager->getCurrentCart();
$cart
->addOrderLine($item)
->setUpdatedAt(new \DateTime());
$cartManager->save($cart);
return $this->redirectToRoute('app.cart.list');
}
}
$nbrPlace = $filterProductService->getPlaces($request->request->get("nbrPlaces"));
$budget = $filterProductService->getBudgets($request->request->get("budget"));
$p = $produitRepository->findOneByIdJoinedToCategory($budget[0], $budget[1], $nbrPlace[0], $nbrPlace[1]);
$session = $request->getSession();
$session->set('produitComparMobil', []);
$forms = [];
for ($i=0; $i<count($p); $i++){
$this->setListMobile($request, $produitRepository, $categorieRepository, null, $p[$i]->getId());
$url = $this->generateUrl("app_comparateur_filtre_produit", ["idProduit"=>$p[$i]->getId()]);
/*$valueRender["form"][] = ["url"=>$url,"form"=>$form->createView()];*/
$forms[] = ["url"=>$url,"form"=>$form->createView()];
}
$productCompare = $session->get('produitComparMobil', []);
$valueRender = [
"prod"=>$p,
"compar_products" => $productCompare,
"form" => $forms,
];
//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.
$caracteristics_aff = [];
$total_produits = sizeof($valueRender['compar_products']);
$intersection = [];
/*if($total_produits > 1 ){
$keys_0 = $valueRender['compar_products'][0]['caracteristiques'];
$keys_1 = $valueRender['compar_products'][1]['caracteristiques'];
$intersection = array_intersect_key($keys_0, $keys_1);
}
if($total_produits > 2 ){
$keys_0 = $valueRender['compar_products'][0]['caracteristiques'];
$keys_1 = $valueRender['compar_products'][1]['caracteristiques'];
$keys_2 = $valueRender['compar_products'][2]['caracteristiques'];
$intersection = array_intersect_key($intersection, $keys_2);
}*/
if(!empty($intersection)){
$caracteristics_aff = array_keys($intersection);
}else if(array_key_exists(0, $valueRender['compar_products'])){
$caracteristics_aff = array_keys($valueRender['compar_products'][0]['caracteristiques']);
}
$valueRender['caracteristics_aff'] = $caracteristics_aff;
$v = $this->renderView("comparateur/partial/_product.html.twig", $valueRender);
return new Response($v);
}
public function setListMobile($request, $produitRepository, $categorieRepository, $id_gamme=null, $id_produit=null): bool
{
/*$categorieProduit = $categorieRepository->find($id_gamme);*/
$produit = $produitRepository->find($id_produit);
$categ = $produit->getCategories()->toArray();
$categorieProduit = $categ[0]->getSousCategorie();
$caractProduct = $produitRepository->find(["id"=>$id_produit])->getProduitRelatedVersions()->toArray();
if ($caractProduct){
$caracteristic = $caractProduct[0] ? $caractProduct[0] : [];
}else{
$caracteristic = [];
}
if ($caracteristic){
$allCaracteristiques = [];
if($caracteristic->isAffGamme()){
$allCaracteristiques['gamme'] = $caracteristic->getGamme();
}
if($caracteristic->isAffCapaciteSpa()){
$allCaracteristiques['capaciteSpa'] = $caracteristic->getCapaciteSpa();
}
if($caracteristic->isAffPlacesAssis()){
$allCaracteristiques['places_assis'] = $caracteristic->getPlacesAssis();
}
if($caracteristic->isAffPlacesAllonge()){
$allCaracteristiques['places_allonge'] = $caracteristic->getPlacesAllonge();
}
if($caracteristic->isAffAppuisTete()){
$allCaracteristiques['appuis_tete'] = $caracteristic->getAppuisTete();
}
if($caracteristic->isAffConditionnement()){
$allCaracteristiques['conditionnement'] = $caracteristic->getConditionnement();
}
if($caracteristic->isAffDimensions()){
$allCaracteristiques['dimensions'] = $caracteristic->getDimensions();
}
if($caracteristic->isAffVolume()){
$allCaracteristiques['volume'] = $caracteristic->getVolume();
}
if($caracteristic->isAffPoids()){
$allCaracteristiques['poids'] = $caracteristic->getPoids();
}
if($caracteristic->isAffJetsTherapie()){
$allCaracteristiques['jetsTherapie'] = $caracteristic->getJetsTherapie();
}
if($caracteristic->isAffJetsAir()){
$allCaracteristiques['jetsAir'] = $caracteristic->getJetsAir();
}
if($caracteristic->isAffJetsEau()){
$allCaracteristiques['jetsEau'] = $caracteristic->getJetsEau();
}
if($caracteristic->isAffFinitionBuses()){
$allCaracteristiques['finitionBuses'] = $caracteristic->getFinitionBuses();
}
if($caracteristic->isAffEnceinteAvecLeds()){
$allCaracteristiques['enceinteAvecLeds'] = $caracteristic->isEnceinteAvecLeds();
}
if($caracteristic->isAffEnceinteSansLeds()){
$allCaracteristiques['enceinteSansLeds'] = $caracteristic->isEnceinteSansLeds();
}
if($caracteristic->isAffPompePressionWhirlpool()){
$allCaracteristiques['pompePressionWhirlpool'] = $caracteristic->translate()->getPompePressionWhirlpool();
}
if($caracteristic->isAffPompeFiltrationWhirlpool()){
$allCaracteristiques['pompeFiltrationWhirlpool'] = $caracteristic->translate()->getPompeFiltrationWhirlpool();
}
if($caracteristic->isAffPompesAAir()){
$allCaracteristiques['pompesAAir'] = $caracteristic->translate()->getPompesAAir();
}
if($caracteristic->isAffPuissanceRechauffeur()){
$allCaracteristiques['rechauffeurs'] = $caracteristic->translate()->getPuissanceRechauffeur();
}
if($caracteristic->isAffgrosSpotLeds()){
$allCaracteristiques['grosSpotLeds'] = $caracteristic->getGrosSpotLeds();
}
if($caracteristic->isAffLedChromaPeripherique()){
$allCaracteristiques['ledChromaPeripherique'] = $caracteristic->getLedChromaPeripherique();
}
if($caracteristic->isAffJetsMassageCervical()){
$allCaracteristiques['jetsMassageCervical'] = $caracteristic->isJetsMassageCervical();
}
if($caracteristic->isAffCascadeLeds()){
$allCaracteristiques['cascadeLeds'] = $caracteristic->isCascadeLeds();
}
if($caracteristic->isAffCascadeNonLeds()){
$allCaracteristiques['cascadeNonLeds'] = $caracteristic->isCascadeNonLeds();
}
if($caracteristic->isAffColonneEauLumineuse()){
$allCaracteristiques['colonneEauLeds'] = $caracteristic->getColonneEauLumineuse();
}
if($caracteristic->isAffAngleLeds()){
$allCaracteristiques['angleLeds'] = $caracteristic->isAngleLeds();
}
if($caracteristic->isAffAromatherapie()){
$allCaracteristiques['aromatherapie'] = $caracteristic->isAromatherapie();
}
if($caracteristic->isAffTurboJetsMollets()){
$allCaracteristiques['turboJetsMollets'] = $caracteristic->isTurboJetsMollets();
}
if($caracteristic->isAffSystemeAntigel()){
$allCaracteristiques['systemeAntigel'] = $caracteristic->isSystemeAntigel();
}
if($caracteristic->isAffChassisInoxIndestructible()){
$allCaracteristiques['chassisInoxIndestructible'] = $caracteristic->isChassisInoxIndestructible();
}
if($caracteristic->isAffChassisAcierGalvanise()){
$allCaracteristiques['chassisAcierGalvanise'] = $caracteristic->isChassisAcierGalvanise();
}
if($caracteristic->isAffIsolationThermoISO14000()){
$allCaracteristiques['isolationThermoISO14000'] = $caracteristic->translate()->getIsolationThermoISO14000();
}
if($caracteristic->isAffSocleIsolationThermique()){
$allCaracteristiques['socleIsolationThermique'] = $caracteristic->isSocleIsolationThermique();
}
if($caracteristic->isAffRadio()){
$allCaracteristiques['radio'] = $caracteristic->isRadio();
}
if($caracteristic->isAffBluetooth()){
$allCaracteristiques['bluetooth'] = $caracteristic->isBluetooth();
}
if($caracteristic->isAffCommandeADistance()){
$allCaracteristiques['commandeADistance'] = $caracteristic->translate()->getCommandeADistance();
}
if($caracteristic->isAffWifi()){
$allCaracteristiques['wifi'] = $caracteristic->isWifi();
}
if($caracteristic->isAffNuageLedSole()){
$allCaracteristiques['nuageLedSole'] = $caracteristic->isNuageLedSole();
}
if($caracteristic->isAffSpotArcEnCiel()){
$allCaracteristiques['spotArcEnCiel'] = $caracteristic->isSpotArcEnCiel();
}
if($caracteristic->isAffFontaineEauLumineuse()){
$allCaracteristiques['fontaineEauLumineuse'] = $caracteristic->getFontaineEauLumineuse();
}
if($caracteristic->isAffPrixPublicConseille()){
$allCaracteristiques['prixPublicConseille'] = $caracteristic->getPrixPublicConseille();
}
/*$allCaracteristiques = [
"places" => $caracteristic->getCapaciteSpa(),
"dimensions" => $caracteristic->getDimensions(),
"conditionnement" => $caracteristic->getConditionnement(),
"volume" => $caracteristic->getVolume(),
"poids" => $caracteristic->getPoids(),
"jetsTherapie" => $caracteristic->getJetsTherapie(),
"finition" => $produit->getFinition()->getName(),
'radio' => $caracteristic->isRadio(),
'tablette' => $caracteristic->getTablette(),
'enceinte' => $caracteristic->getEnceinte(),
'grosSpotLedChromo' => $caracteristic->getGrosSpotLeds(),
'cascadeLed' => $caracteristic->getCascadeLed(),
'aromatherapie' => $caracteristic->isAromatherapie(),
'skimmer' => $caracteristic->isSkimmer(),
'ozonateur' => $caracteristic->isOzonateur(),
'systemeAntigel' => $caracteristic->isSystemeAntigel(),
'chassisInoxIndestructible' => $caracteristic->isChassisInoxIndestructible(),
// 'garantie' => $caracteristic->getGarantie(),
'volts' => $caracteristic->getVolts(),
];*/
}else{
$allCaracteristiques = [
"places" => null,
"dimensions" => null,
"conditionnement" => null,
"volume" => null,
"poids" => null,
"jetsTherapie" => null,
"finition" => null,
'radio' => null,
'tablette' => null,
'enceinte' => null,
'grosSpotLedChromo' => null,
'cascadeLed' => null,
'aromatherapie' => null,
'skimmer' => null,
'ozonateur' => null,
'systemeAntigel' => null,
'chassisInoxIndestructible' => null,
'garantie' => null,
'volts' => null,
];
}
$session = $request->getSession();
$filters = $session->get('produitComparMobil', []);
$note = $produit->getNoteClientOfOneProduct($produit->getAvisClients());
$newProduct = array_merge($filters, [[
'idProduit' => $produit->getId(),
'categorie'=>$categorieProduit,
'nomProduit' => $produit->translate($request->getLocale())->getName(),
'produit' => $produit,
'note' => $note,
'caracteristiques' => $allCaracteristiques,
]]);
$session->set('produitComparMobil', $newProduct);
return true;
}
/**
* @Route("/comparateur/filtre/produit/list/mobile/{idProduit}", name="app_comparateur_filtre_get_produit_list_mobile")
*/
public function getProductInComparatorMobile(Request $request, ProduitRepository $produitRepository, CouleurRepository $couleurRepository, CartManager $cartManager, $idProduit = null){
$form = $this->createForm(AddToCartType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$product = $produitRepository->find($idProduit);
if ($product){
$item = $form->getData();
$item->setProduit($product);
$color = $request->request->get('color');
if(!empty($color)){
$color = $couleurRepository->findOneById($color);
$item_color = new OrderLineColor();
$item_color->setColor($color);
$item_color->setPriceTtc($color->getPriceTtc());
$item_color->setPriceHt($color->getPriceHt());
$item_color->setDescription($color->getName());
$item->setOrderLineColor($item_color);
}
$cart = $cartManager->getCurrentCart();
$cart
->addOrderLine($item)
->setUpdatedAt(new \DateTime());
$cartManager->save($cart);
return $this->redirectToRoute('app.cart.list');
}
}
$session = $request->getSession();
$forms = [];
// $session->set('produitComparMobil', []);
$filters = $session->get('produitComparMobil', []);
for ($i=0; $i<count($filters); $i++){
$url = $this->generateUrl("app_comparateur_filtre_produit", ["idProduit"=>$filters[$i]["idProduit"]]);
$forms[] = ["url"=>$url,"form"=>$form->createView()];
}
$productCompare = $session->get('produitComparMobil', []);
$valueRender = [
"prod"=>$filters,
"compar_products" => $productCompare,
"form" => $forms,
];
//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.
$caracteristics_aff = [];
$intersection = [];
if(!empty($intersection)){
$caracteristics_aff = array_keys($intersection);
}else if(array_key_exists(0, $valueRender['compar_products'])){
$caracteristics_aff = array_keys($valueRender['compar_products'][0]['caracteristiques']);
}
$valueRender['caracteristics_aff'] = $caracteristics_aff;
$v = $this->renderView("comparateur/partial/_product.html.twig", $valueRender);
return new Response($v);
}
/**
* @Route("/comparateur/filtre/produit/list/mobile/modifier/resultat", name="app_comparateur_filtre_get_produit_list_mobile_modif_result")
*/
public function modifyResultInitSession(Request $request){
$session = $request->getSession();
$session->set('produitComparMobil', []);
return $this->redirectToRoute("app_comparateur_filtre_get_produit_list_mobile");
}
/**
* @Route("/comparateur/supprimer-list/mobil/produit/{id_prod}", name="app_comparateur_del_one_in_list_mobil")
*/
public function removeOneInListMobil(Request $request, $id_prod=null){
$session = $request->getSession();
$filtersMobil = $session->get('produitComparMobil', []);
$newArrayFiltersMobil = [];
foreach ($filtersMobil as $f){
if ($f["idProduit"] != $id_prod){
$newArrayFiltersMobil[] = $f;
}
}
$session->set('produitComparMobil', $newArrayFiltersMobil);
return $this->redirectToRoute("app_comparateur_filtre_get_produit_list_mobile");
}
}