src/Controller/Produit/Produit/ProduitController.php line 129

Open in your IDE?
  1. <?php
  2. /*(c) Noel Kenfack <noel.kenfack@yahoo.fr> Février 2015
  3. */
  4. namespace App\Controller\Produit\Produit;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use App\Entity\Produit\Produit\Produit;
  8. use App\Entity\Produit\Produit\Coutlivraison;
  9. use App\Entity\Produit\Produit\Panier;
  10. use App\Entity\Users\User\User;
  11. use App\Entity\Produit\Produit\Produitpanier;
  12. use App\Entity\Produit\Produit\Imgproduit;
  13. use App\Form\Produit\Produit\ProduitType;
  14. use App\Form\Produit\Produit\CoutlivraisonType;
  15. use App\Entity\Produit\Produit\Souscategorie;
  16. use App\Entity\Produit\Produit\Categorie;
  17. use App\Entity\General\Template\Recherche;
  18. use App\Service\Servicetext\GeneralServicetext;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  21. use App\Service\Email\Singleemail;
  22. use App\Entity\Produit\Produit\Caracteristiqueproduit;
  23. use Symfony\Component\Form\Extension\Core\Type\TextType;
  24. class ProduitController extends AbstractController
  25. {
  26. private $params;
  27. private $_servicemail;
  28. public function __construct(ParameterBagInterface $paramsSingleemail $servicemail)
  29. {
  30.     $this->params $params;
  31.     $this->_servicemail $servicemail;
  32. }
  33. public function modifierproduit(GeneralServicetext $serviceRequest $request$id)
  34. {
  35.     $em $this->getDoctrine()->getManager();
  36.     if(isset($_GET['id']))
  37.     {
  38.         $id $_GET['id'];
  39.     }else{
  40.         $id $id;
  41.     }
  42.     $produit $em->getRepository(Produit::class)
  43.                     ->find($id);
  44.     if($produit != null)
  45.     {
  46.     $formpro $this->createForm(ProduitType::class, $produit, array('cat'=>$produit->getsouscategorie()->getCategorie()));
  47.     if ($request->getMethod() == 'POST'){
  48.         $formpro->handleRequest($request);
  49.         $produit->setServicetext($service);
  50.         if($produit->getImgproduit() != null)
  51.         {
  52.             $produit->getImgproduit()->setServicetext($service);
  53.         }
  54.         if ($formpro->isValid()){
  55.             
  56.         $em->flush();
  57.         $this->get('session')->getFlashBag()->add('information','Modification effectuée avec succès');
  58.         }else{
  59.         $this->get('session')->getFlashBag()->add('information','Une ereur a été rencontrée!');
  60.         }
  61.         return $this->redirect($this->generateUrl('users_adminuser_liste_produit_souscategorie', array('id'=>$produit->getSouscategorie()->getId())));
  62.     }
  63.                        
  64.     return $this->render('Theme/Users/Adminuser/Produit/modifierproduit.html.twig',
  65.     array('produit'=>$produit,'formpro'=>$formpro->createView()));
  66.     }else{
  67.         echo 'Echec ! Une erreur a été rencontrée.';
  68.         exit;
  69.     }
  70. }
  71. public function miseajourproduit(Produit $produitGeneralServicetext $serviceRequest $request)
  72. {
  73.     $em $this->getDoctrine()->getManager();
  74.     $formpro $this->createForm(ProduitType::class, $produit, array('cat'=>$produit->getsouscategorie()->getCategorie()));
  75.     if($request->getMethod() == 'POST')
  76.     {
  77.         $formpro->handleRequest($request);
  78.         $produit->setUser($this->getUser());
  79.         $imgpro $produit->getImgpro();
  80.         $imgpro->setServicetext($service);
  81.         $imgpro->setProduit($produit);
  82.         $liste_img $produit->getImgproduits();
  83.         $nbimgproduit $this->container->getParameter('nbimgparproduit');
  84.         if($formpro->isValid() and count($liste_img) <= $nbimgproduit){
  85.             $em->persist($imgpro);
  86.             $em->flush();
  87.         }else{
  88.             if( count($liste_img) > $nbimgproduit )
  89.             {
  90.               $this->get('session')->getFlashBag()->add('images','Trop d\'image pour ce produit.');
  91.             }else{
  92.               $this->get('session')->getFlashBag()->add('images','Données invalides.');
  93.             }
  94.         }
  95.     }
  96.     return $this->redirect($this->generateUrl('users_adminuser_update_courant_produit',array('id'=>$produit->getId())));
  97. }
  98. public function supprimerimage(Imgproduit $imgproduitRequest $request)
  99. {
  100.     $em $this->getDoctrine()->getManager();
  101.     $formsupp $this->createFormBuilder()->getForm(); 
  102.     $produit $imgproduit->getProduit();
  103.     if ($request->getMethod() == 'POST') {
  104.     $formsupp->handleRequest($request);
  105.     if ($formsupp->isValid()){
  106.     if(count($produit->getImgproduits()) > 1)
  107.     {
  108.         $em->remove($imgproduit);
  109.         $em->flush();
  110.         $this->get('session')->getFlashBag()->add('informationsupp','Suppression effectuée avec succés');
  111.     }else{
  112.         $this->get('session')->getFlashBag()->add('informationsupp','Un produit doit avoir au mions une images');
  113.     }
  114.     return $this->redirect($this->generateUrl('users_adminuser_update_courant_produit',array('id'=>$produit->getId())));
  115.     }
  116.     }
  117.     $this->get('session')->getFlashBag()->add('supprime_image',$imgproduit->getId());
  118.     $this->get('session')->getFlashBag()->add('supprime_image',$imgproduit->getProduit()->getNom());
  119.     return $this->redirect($this->generateUrl('users_adminuser_update_courant_produit',array('id'=>$produit->getId())));
  120. }
  121. public function listeproduituser(Souscategorie $souscategorie)
  122. {
  123.     $em $this->getDoctrine()->getManager();
  124.     $liste_produit $em->getRepository(Produit::class)
  125.                         ->findBy(array('souscategorie'=>$souscategorie), array('date'=>'asc'));
  126.            
  127.     return $this->render('Theme/Produit/Produit/Produit/listeproduituser.html.twig'
  128.     array('liste_produit'=>$liste_produit,'souscategorie'=>$souscategorie,
  129.     'categorie'=>$souscategorie->getCategorie()));
  130. }
  131. public function produitformation(Categorie $categorie)
  132. {
  133.     $em $this->getDoctrine()->getManager();
  134.     $liste_formation $em->getRepository(Categorie::class)
  135.                              ->myTypeFormation(2);
  136.     $categorie->setEm($em);        
  137.     
  138.     return $this->render('Theme/Produit/Produit/Produit/produitformation.html.twig'
  139.     array('categorie'=>$categorie'liste_formation'=>$liste_formation));
  140. }
  141. public function detailproduit(Produit $produit)
  142. {
  143.     $em $this->getDoctrine()->getManager();
  144.     $souscategorie $produit->getSouscategorie();
  145.     
  146.     $liste_scat_alter $em->getRepository(Souscategorie::class)
  147.                               ->topsouscategorieAlter($produit->getSouscategorie()->getCategorie()->getTypeservice(),10);
  148.     $liste_scat $em->getRepository(Souscategorie::class)
  149.                               ->topsouscategorie($produit->getSouscategorie()->getCategorie()->getTypeservice(),10);                         
  150.     foreach($liste_scat as $scat)
  151.     {
  152.         $scat->setEm($em);
  153.     }
  154.     return $this->render('Theme/Produit/Produit/Produit/detailproduit.html.twig',
  155.     array('produit'=>$produit'souscategorie'=>$souscategorie'liste_scat'=>$liste_scat'liste_scat_alter'=>$liste_scat_alter));
  156. }
  157. public function likeproduct()
  158. {
  159.     if(isset($_GET['id']))
  160.     {
  161.     $id $_GET['id'];
  162.     }else{
  163.     $id 0;
  164.     }
  165.     $em $this->getDoctrine()->getManager();
  166.     $produit $em->getRepository(Produit::class)
  167.                      ->find($id);
  168.     if($produit != null and $this->getUser() != null){
  169.     $userlikes $produit->getUserlikes();
  170.     $trouve false;
  171.     foreach($userlikes as $user)
  172.     {
  173.         if($this->getUser() == $user)
  174.         {
  175.             $trouve true;
  176.         }
  177.     }
  178.     if($trouve == false)
  179.     {
  180.         $produit->addUserlike($this->getUser());
  181.         $em->flush();
  182.     }
  183.     echo 1;
  184.     exit;
  185.     }else{
  186.     echo 0;
  187.     exit;
  188.     }
  189. }
  190. public function ajouterpanier()
  191. {
  192.     if(isset($_POST['id']))
  193.     {
  194.         $id $_POST['id'];
  195.     }else{
  196.         $id 0;
  197.     }
  198.     
  199.     if(isset($_POST['type']))
  200.     {
  201.         $type $_POST['type'];
  202.     }else{
  203.         $type 'fc';
  204.     }
  205.     
  206.     $em $this->getDoctrine()->getManager();
  207.     $idcard 0;
  208.     if(isset($_COOKIE["PIDCARD"]) and $_COOKIE["PIDCARD"] != 'empty')
  209.     {
  210.         $idcard $_COOKIE["PIDCARD"];
  211.     }
  212.     
  213.     $oldpanier $em->getRepository(Panier::class)
  214.                      ->findOneBy(array('id'=>$idcard,'sousmis'=>0));
  215.     if($oldpanier == null and $this->getUser() != null)
  216.     {
  217.         $oldpanier $em->getRepository(Panier::class)
  218.                         ->findOneBy(array('user'=>$this->getUser(),'sousmis'=>0));
  219.     }
  220.         
  221.     
  222.     if($type == 'fc'){
  223.         $produit $em->getRepository(Produit::class)
  224.                       ->find($id);
  225.         if($produit != null){
  226.             if($oldpanier == null)
  227.             {
  228.                 $panier = new Panier();
  229.                 $panier->setUser($this->getUser());
  230.                 $em->persist($panier);
  231.                 
  232.                 $produitpanier = new Produitpanier();
  233.                 $produitpanier->setPanier($panier);
  234.                 $produitpanier->setProduit($produit);
  235.                 $em->persist($produitpanier);
  236.                 $em->flush();
  237.                 
  238.                 // Stock les infos du cookie
  239.                 $cookie_info = array(
  240.                     'name'  => 'PIDCARD',
  241.                     'value' => $panier->getId(),
  242.                     'time'  => time() + (3600 24 360)
  243.                 );
  244.                 
  245.                 // Cree le cookie
  246.                 setCookie($cookie_info['name'], $cookie_info['value'], $cookie_info['time'],'/');
  247.                 setCookie('PIDCARDDUR',$cookie_info['time'], $cookie_info['time'],'/');
  248.             }else{
  249.                 if(count($oldpanier->getProduitpaniers()) != 0)
  250.                 {
  251.                     $listprod $oldpanier->getProduitpaniers();
  252.                     
  253.                     $trouve false;
  254.                     foreach($listprod as $prod)
  255.                     {
  256.                         if($prod->getProduit() == $produit)
  257.                         {
  258.                             if($prod->getQuantite() < 1)
  259.                             {
  260.                                 $prod->setQuantite($prod->getQuantite() + 1);
  261.                                 $trouve true;
  262.                                 break;
  263.                             }else{
  264.                                 $trouve true;
  265.                                 break;
  266.                             }
  267.                         }
  268.                     }
  269.                     
  270.                     if($trouve == false)
  271.                     {
  272.                         $produitpanier = new Produitpanier();
  273.                         $produitpanier->setPanier($oldpanier);
  274.                         $produitpanier->setProduit($produit);
  275.                         $em->persist($produitpanier);
  276.                     }
  277.                 }else{
  278.                     $produitpanier = new Produitpanier();
  279.                     $produitpanier->setPanier($oldpanier);
  280.                     $produitpanier->setProduit($produit);
  281.                     $em->persist($produitpanier);
  282.                 }
  283.                 $em->flush();
  284.             }
  285.         echo 1;
  286.         exit;
  287.         }else{
  288.             echo 0;
  289.             exit;
  290.         }
  291.     }else{
  292.         $souscategorie $em->getRepository(Souscategorie::class)
  293.                             ->find($id);
  294.         if($souscategorie != null)
  295.         {
  296.         foreach($souscategorie->getProduits() as $produit)
  297.         {
  298.             if($oldpanier == null)
  299.             {
  300.                 $panier = new Panier();
  301.                 $panier->setUser($this->getUser());
  302.                 $em->persist($panier);
  303.                 
  304.                 $produitpanier = new Produitpanier();
  305.                 $produitpanier->setPanier($panier);
  306.                 $produitpanier->setProduit($produit);
  307.                 $em->persist($produitpanier);
  308.                 $em->flush();
  309.                 
  310.                 // Stock les infos du cookie
  311.                 $cookie_info = array(
  312.                     'name'  => 'PIDCARD',
  313.                     'value' => $panier->getId(),
  314.                     'time'  => time() + (3600 24 360)
  315.                 );
  316.                 
  317.                 // Cree le cookie
  318.                 setCookie($cookie_info['name'], $cookie_info['value'], $cookie_info['time'],'/');
  319.                 setCookie('PIDCARDDUR',$cookie_info['time'], $cookie_info['time'],'/');
  320.                 $oldpanier $panier;
  321.             }else{
  322.                 $produitpanier = new Produitpanier();
  323.                 $produitpanier->setPanier($oldpanier);
  324.                 $produitpanier->setProduit($produit);
  325.                 $em->persist($produitpanier);
  326.                 $em->flush();
  327.             }
  328.             echo 1;
  329.             exit;
  330.         }
  331.         }else{
  332.             echo 0;
  333.             exit;
  334.         }
  335.     }
  336. }
  337. public function addpanier(Produit $produit)
  338. {
  339.     $em $this->getDoctrine()->getManager();
  340.     if($this->getUser() != null)
  341.     {
  342.     $oldpanier $em->getRepository(Panier::class)
  343.                      ->findOneBy(array('user'=>$this->getUser(),'payer'=>0));
  344.         if($oldpanier == null)
  345.         {
  346.             $panier = new Panier();
  347.             $panier->setUser($this->getUser());
  348.             $em->persist($panier);
  349.             $produitpanier = new Produitpanier();
  350.             $produitpanier->setPanier($panier);
  351.             $produitpanier->setProduit($produit);
  352.             $em->persist($produitpanier);
  353.             $em->flush();
  354.         }else{
  355.             if(count($oldpanier->getProduitpaniers()) != 0)
  356.             {
  357.                 $listprod $oldpanier->getProduitpaniers();
  358.                 $trouve false;
  359.                 foreach($listprod as $prod)
  360.                 {
  361.                     if($prod->getProduit() == $produit)
  362.                     {
  363.                         $prod->setQuantite($prod->getQuantite() + 1);
  364.                         $trouve true;
  365.                         break;
  366.                     }
  367.                 }
  368.                 if($trouve == false)
  369.                 {
  370.                     $produitpanier = new Produitpanier();
  371.                     $produitpanier->setPanier($oldpanier);
  372.                     $produitpanier->setProduit($produit);
  373.                     $em->persist($produitpanier);
  374.                 }
  375.             }else{
  376.                 $produitpanier = new Produitpanier();
  377.                 $produitpanier->setPanier($oldpanier);
  378.                 $produitpanier->setProduit($produit);
  379.                 $em->persist($produitpanier);
  380.             }
  381.             $em->flush();
  382.         }
  383.     $this->get('session')->getFlashBag()->add('ajoutproduit','Produit ajouter avec succès');
  384.     }else{
  385.     $this->get('session')->getFlashBag()->add('ajoutproduit','Une erreur a été rencontrée !');
  386.     }
  387.     return $this->redirect($this->generateUrl('produit_produit_liste_produit_souscategorie',array('id'=>$produit->getSouscategorie()->getId())));
  388. }
  389. public function reglementcommande()
  390. {
  391.     $em $this->getDoctrine()->getManager();
  392.     $idcard 0;
  393.     if(isset($_COOKIE["PIDCARD"]) and $_COOKIE["PIDCARD"] != 'empty')
  394.     {
  395.         $idcard $_COOKIE["PIDCARD"];
  396.     }
  397.     
  398.     $liste_prod = new \Doctrine\Common\Collections\ArrayCollection();
  399.     $panier $em->getRepository(Panier::class)
  400.                      ->findOneBy(array('id'=>$idcard,'sousmis'=>0));
  401.     if($panier == null and $this->getUser() != null)
  402.     {
  403.         $panier $em->getRepository(Panier::class)
  404.                         ->findOneBy(array('user'=>$this->getUser(),'sousmis'=>0));
  405.     }
  406.     if($panier != null)
  407.     {
  408.         $nbprod 0;
  409.         $produitpanier null;
  410.         
  411.         $produitpanier $panier->getProduitpaniers();
  412.         foreach($produitpanier as $prodpan)
  413.         {
  414.             $nbprod $nbprod $prodpan->getQuantite();
  415.             $prodpan->getProduit()->setEm($em);
  416.         }
  417.         if(count($produitpanier) > 0)
  418.         {
  419.             return $this->render('Theme/Produit/Produit/Produit/reglementcommande.html.twig'
  420.             array('panier'=>$panier,'produitpanier'=>$produitpanier,'nbprod'=>$nbprod));
  421.         }else{
  422.             echo 2;
  423.             exit;
  424.         }
  425.     }else{
  426.         echo 0;
  427.         exit;
  428.     }
  429. }
  430. public function editcommande()
  431. {
  432.     if(isset($_GET['id']))
  433.     {
  434.     $id $_GET['id'];
  435.     }else{
  436.     $id 0;
  437.     }
  438.     if(isset($_GET['quantite']))
  439.     {
  440.     $quantite $_GET['quantite'];
  441.     }else{
  442.     $quantite 0;
  443.     }
  444.     $em $this->getDoctrine()->getManager();
  445.     $prodpan $em->getRepository(Produitpanier::class)
  446.                      ->find($id);
  447.     if($prodpan != null)
  448.     {
  449.         $prodpan->setQuantite($quantite);
  450.         $em->flush();
  451.         echo 1;
  452.         exit;
  453.     }else{
  454.         echo 0;
  455.         exit;
  456.     }
  457. }
  458. public function eleveproduit()
  459. {
  460.     $em $this->getDoctrine()->getManager();
  461.     if(isset($_GET['id']))
  462.     {
  463.         $id $_GET['id'];
  464.     }else{
  465.         $id 0;
  466.     }
  467.     $prodpan $em->getRepository(Produitpanier::class)
  468.                      ->find($id);
  469.     
  470.     $idcard 0;
  471.     if(isset($_COOKIE["PIDCARD"]) and $_COOKIE["PIDCARD"] != 'empty')
  472.     {
  473.         $idcard $_COOKIE["PIDCARD"];
  474.     }
  475.         
  476.     if($prodpan != null and (($this->getUser() == $prodpan->getpanier()->getUser()) or $prodpan->getPanier()->getId() == $idcard))
  477.     {
  478.         $panier $prodpan->getPanier();
  479.         $em $this->getDoctrine()->getManager();
  480.         $em->remove($prodpan);
  481.         $em->flush();
  482.         
  483.         echo 1;
  484.         exit;
  485.     }
  486.     echo 0;
  487.     exit;
  488. }
  489. public function supprimerproduit(Produit $produit)
  490. {
  491.     $em $this->getDoctrine()->getManager();
  492.     $prodpan $em->getRepository(Produitpanier::class)
  493.                      ->findBy(array('produit'=>$produit));
  494.     $categorie $produit->getSouscategorie();
  495.         $formsupp $this->createFormBuilder()->getForm(); 
  496.         $request $this->get('request');
  497.         if ($request->getMethod() == 'POST') {
  498.         $formsupp->handleRequest($request);
  499.         if ($formsupp->isValid()){
  500.             
  501.             $caract $em->getRepository(Caracteristiqueproduit::class)
  502.                         ->findBy(array('produit'=>$produit));
  503.                      
  504.             if(count($prodpan) == and count($caract) == 0){
  505.                 $em->remove($produit);
  506.                 $em->flush();
  507.                 $this->get('session')->getFlashBag()->add('information','Suppression effectuée avec succès');
  508.             }else{
  509.                 $this->get('session')->getFlashBag()->add('information','Action réfusée ! ce produit est déjà reservé par un utilisateur.');
  510.             }
  511.         }
  512.         }else{
  513.             $this->get('session')->getFlashBag()->add('supprime_prod',$produit->getId());
  514.             $this->get('session')->getFlashBag()->add('supprime_prod',$produit->getNom());
  515.         }
  516.     return $this->redirect($this->generateUrl('users_adminuser_liste_produit_souscategorie',array('id'=>$categorie->getId())));
  517. }
  518. public function rechercheproduit(Request $request)
  519. {
  520.     $em $this->getDoctrine()->getManager();
  521.     $recherche = new Recherche();
  522.     $formBuilder $this->createFormBuilder($recherche);
  523.     $formBuilder
  524.               ->add('donnee'TextType::class ,array('attr'=>array('class'=>'form-control police2','placeholder'=>'Retrouver un produit','type'=>'search')));
  525.     $formrecher $formBuilder->getForm();
  526.     $liste_produit null;
  527.     if ($request->getMethod() == 'POST') {
  528.         $formrecher->handleRequest($request);
  529.         if ($formrecher->isValid()){
  530.          $liste_produit $em->getRepository(Produit::class)
  531.                              ->findProduit($recherche->getDonnee());
  532.         }
  533.     }
  534.     return $this->render('Theme/Produit/Produit/Produit/recherche.html.twig', array('liste_produit'=>$liste_produit,'donnee'=>$recherche->getDonnee()));
  535. }
  536. public function addcoutlivraison(Produit $produitRequest $requestGeneralServicetext $service)
  537. {
  538.     $em $this->getDoctrine()->getManager();
  539.     $coutlivraison = new Coutlivraison($service);
  540.     $formlivraison $this->createForm(CoutlivraisonType::class, $coutlivraison);
  541.     if ($request->getMethod() == 'POST'){
  542.     $formlivraison->handleRequest($request);
  543.     $coutlivraison->setUser($this->getUser());
  544.     $coutlivraison->setProduit($produit);
  545.     $oldcout $em->getRepository(Coutlivraison::class)
  546.                   ->findOneBy(array('ville'=>$coutlivraison->getVille(),'produit'=>$produit));
  547.         if($formlivraison->isValid() and $oldcout == null){
  548.             $em->persist($coutlivraison);
  549.             $em->flush();
  550.             $this->get('session')->getFlashBag()->add('informationsupp','Enregistrement effectué avec succès');
  551.         }
  552.     }
  553.     return $this->redirect($this->generateUrl('users_adminuser_update_courant_produit',array('id'=>$produit->getId())));
  554. }
  555. public function modifcoutlivraison(Coutlivraison $coutlivraison)
  556. {
  557.     $em $this->getDoctrine()->getManager();
  558.     if (isset($_POST['coutlivraison']) and is_numeric($_POST['coutlivraison'])){
  559.         $coutlivraison->setMontant(htmlspecialchars($_POST['coutlivraison']));
  560.         $em->flush();
  561.         $this->get('session')->getFlashBag()->add('informationsupp','Enregistrement effectué avec succès');
  562.     }
  563.     return $this->redirect($this->generateUrl('users_adminuser_update_courant_produit',array('id'=>$coutlivraison->getProduit()->getId())));
  564. }
  565. public function supprimercoutlivraison(Coutlivraison $coutlivraison)
  566. {
  567.     $produit $coutlivraison->getProduit();
  568.     $em $this->getDoctrine()->getManager();
  569.     $em->remove($coutlivraison);
  570.     $em->flush();
  571.     return $this->redirect($this->generateUrl('users_adminuser_update_courant_produit',array('id'=>$produit->getId())));
  572. }
  573. public function accueilboutique()
  574. {
  575.     $em $this->getDoctrine()->getManager();
  576.     $top_produit $em->getRepository(Produit::class)
  577.                           ->findBestProduit(15);
  578.     return $this->render('Theme/Produit/Produit/Produit/accueilboutique.html.twig',array('top_produit'=>$top_produit));
  579. }
  580. public function modalsouscriptionservice()
  581. {
  582.     $em $this->getDoctrine()->getManager();
  583.     return $this->render('Theme/Produit/Produit/Produit/modalsouscriptionservice.html.twig');
  584. }
  585. }