src/Controller/cart/CartController.php line 47

Open in your IDE?
  1. <?php
  2. namespace App\Controller\cart;
  3. use Symfony\Component\HttpFoundation\Response;
  4. use App\Entity\stock\Produit;
  5. use App\Repository\stock\ProduitRepository;
  6. use App\Repository\user\AbonneRepository;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use App\ControllerModel\user\paramUtilTrait;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use App\Repository\user\UtilisateurRepository;
  13. use App\Repository\stock\VilleRepository;
  14. use App\Repository\client\ClientRepository;
  15. use App\Repository\stock\PrixRigueurRepository;
  16. use App\Repository\cms\MenuRepository;
  17. use App\Repository\stock\LigneCommandeRepository;
  18. use App\Repository\client\EtatClientRepository;
  19. /**
  20.  * @Route("/cart")
  21.  */
  22. class CartController extends AbstractController
  23. {
  24.     use paramUtilTrait;
  25.     public function __construct(AbonneRepository $abonneRepositoryMenuRepository $menuRepository,  ProduitRepository $productsRepository
  26.     ,UtilisateurRepository $utilisateurRepositoryVilleRepository $villeRepositoryClientRepository $clientRepositoryPrixRigueurRepository $prixRigueurRepository,
  27.     LigneCommandeRepository $ligneCommandeRepositoryEtatClientRepository  $etatClientRepository 
  28.     ) {
  29.         // parent::__construct();
  30.          $this->abonneRepository $abonneRepository
  31.          $this->menuRepository $menuRepository;  
  32.          $this->productsRepository $productsRepository
  33.          $this->utilisateurRepository $utilisateurRepository
  34.          $this->villeRepository =$villeRepository 
  35.          $this->clientRepository $clientRepository;
  36.          $this->prixRigueurRepository  $prixRigueurRepository ;
  37.          $this->ligneCommandeRepository  $ligneCommandeRepository ;
  38.          $this->etatClientRepository $etatClientRepository;
  39.          
  40.      }
  41.     /**
  42.      * @Route("/info", name="cart_index")
  43.      */
  44.     public function index(Request $requestSessionInterface $session)
  45.     {
  46.         $panier $session->get("panier", []);
  47.        
  48.         $em $this->getDoctrine()->getManager();
  49.         $adresseWeb $request->getHost();
  50.         $typeSite 1;
  51.         $objetInitial=  $this->abonneRepository->findOneBy(['adresseWeb'=>$adresseWeb]);
  52.         $objetInitial=  $this->abonneRepository->find(62);
  53.         if($typeSite == 1)
  54.             $listeMenu $this->creerTabMenu($em,0,$objetInitial->getId(),$this->menuRepository);   
  55.         else
  56.             $listeMenu $this->creerTabMenu($em,0,$objetInitial->getId(), $this->menuRepository);  
  57.         if($objetInitial == null ){
  58.             $template $templateRepository->find(20);
  59.         }else{
  60.             $template $objetInitial->getTemplate();
  61.             // $template = $em->getRepository($this->cmsBundle . 'Template')->find(1);
  62.         }  
  63.         // On "fabrique" les données
  64.         $dataPanier = [];
  65.         $total 0;
  66.         //$session->remove("panier");
  67.        // var_dump($panier); exit;
  68.         foreach($panier as $id => $quantite){
  69.             
  70.             $product $this->productsRepository->find($id);
  71.             $dataPanier[] = [
  72.                 "produit" => $product,
  73.                 "quantite" => $quantite['quantite'],
  74.                 "prix" => $quantite['prix']
  75.             ];
  76.             $total += $quantite['prix'] * $quantite['quantite']; //$product->getPrice()
  77.         }
  78.         
  79.         if($template != null ){
  80.             if($template->getNomDossierTemplate()==''){
  81.                 $nomTemplate "Default";
  82.             }else{
  83.                 $nomTemplate $template->getNomDossierTemplate();
  84.             }
  85.        }else{
  86.             $nomTemplate "Default";
  87.             //var_dump(1);exit;
  88.        }
  89.        //exit;
  90.        $objetAbonne $objetInitial;
  91.         return $this->render('site/'.$nomTemplate.'/cart/index.html.twig'compact("dataPanier""total""listeMenu""typeSite","objetAbonne" ));
  92.     }
  93.     /**
  94.      * @Route("/add", name="cart_add")
  95.      */
  96.     public function add(Request $requestSessionInterface $session)
  97.     {
  98.         // On récupère le panier actuel
  99.         $quantite $request->get('qteSaisie');
  100.         $unite $request->get('qteUnite');
  101.         $prix $request->get('prixProduct');
  102.         $id $request->get('id');
  103.        // var_dump($quantite,$unite,$prix, $id );exit;
  104.         $rep =array();
  105.         $total=0;
  106.         //if($unite == 2)
  107.             //$unite = 1000;
  108.         
  109.         //$quantiteTotal = (int)$quantite * (int)$unite;
  110.         
  111.         $quantiteChoisie["qteUnite"] = $unite;
  112.         $quantiteChoisie["prix"] = $prix;
  113.         $quantiteChoisie["quantite"] =  $quantite;
  114.         $panier $session->get("panier", []);
  115.         //var_dump($quantiteChoisie);exit;
  116.         if(!empty($panier[$id])){
  117.             $quantiteActuel  $panier[$id]; 
  118.              //var_dump($quantiteTotal);exit;
  119.             $quantiteChoisie["quantite"] = $quantiteActuel["quantite"] + $quantite ;
  120.             $panier[$id]=  $quantiteChoisie;
  121.         }else{
  122.             $panier[$id] = $quantiteChoisie;
  123.         }
  124.         // On sauvegarde dans la session
  125.         $session->set("panier"$panier);
  126.         
  127.         //var_dump($panier);exit;
  128.         foreach($panier as $id => $infoQuantite){
  129.             //var_dump($id);exit;
  130.             $product $this->productsRepository->getOneProduitAjax($id);
  131.             $dataPanier[] = [
  132.                 "produit" => $product,
  133.                 "quantite" => $infoQuantite["quantite"],
  134.                 "prix" => $infoQuantite["prix"],
  135.                 "unite" => $infoQuantite["qteUnite"]
  136.             ];
  137.             $total += $prix $quantite//$product->getPrice()
  138.         }
  139.         //return $this->redirectToRoute("cart_index");
  140.         $rep['panierCount'] =count($panier);
  141.         $rep['panierList'] =$dataPanier;
  142.         $rep['panierTotal']= $total ;
  143.         
  144.         return new Response(json_encode($rep));
  145.     }
  146.     /**
  147.      * @Route("/remove/{id}", name="cart_remove")
  148.      */
  149.     public function remove(Produit $productSessionInterface $session)
  150.     {
  151.         // On récupère le panier actuel
  152.         $panier $session->get("panier", []);
  153.         $id $product->getId();
  154.         if(!empty($panier[$id])){
  155.             if($panier[$id] > 1){
  156.                 $panier[$id]--;
  157.             }else{
  158.                 unset($panier[$id]);
  159.             }
  160.         }
  161.         // On sauvegarde dans la session
  162.         $session->set("panier"$panier);
  163.         return $this->redirectToRoute("cart_index");
  164.     }
  165.     /**
  166.      * @Route("/delete/{id}", name="cart_delete")
  167.      */
  168.     public function delete(Produit $productSessionInterface $session)
  169.     {
  170.         // On récupère le panier actuel
  171.         $panier $session->get("panier", []);
  172.         $id $product->getId();
  173.         if(!empty($panier[$id])){
  174.             unset($panier[$id]);
  175.         }
  176.         // On sauvegarde dans la session
  177.         $session->set("panier"$panier);
  178.         return $this->redirectToRoute("cart_index");
  179.     }
  180.     /**
  181.      * @Route("/delete", name="cart_delete_all")
  182.      */
  183.     public function deleteAll(SessionInterface $session)
  184.     {
  185.         $session->remove("panier");
  186.         return $this->redirectToRoute("cart_index");
  187.     }
  188.     /**
  189.      * @Route("/save/order", name="cart_save_order")
  190.      */
  191.     public function saveOrderRequest $requestSessionInterface $session)
  192.     {
  193.         // On récupère le panier actuel
  194.         $adresseWeb $request->getHost();
  195.         $objetInitial$this->abonneRepository->findOneBy(['adresseWeb'=>$adresseWeb]);
  196.           //$objetInitial= $this->abonneRepository->find(62);
  197.         $objetutilisateur $this->utilisateurRepository->findOneBy(['abonne'=>$objetInitial]);
  198.         $em $this->getDoctrine()->getManager();
  199.         $objetClient $this->saveClient($em$request->get('nomPrenoms'), """"$request->get('tel'), $codeGenere=rand(), 00$objetutilisateur->getId(), $password=""$this->utilisateurRepository$this->villeRepository$this->clientRepository$this->prixRigueurRepository,  $this->etatClientRepository);
  200.         $objetCommande $this->saveCommande($em$codeCommande=rand(),  $montant=0$objetClient["client"], $objetutilisateur);
  201.         $panier $session->get("panier", []);
  202.        
  203.         $total  0;
  204.         $msg "";
  205.         foreach($panier as $id => $infoQuantite){
  206.             if($id != ""){
  207.                 $objetProduit $this->productsRepository->find($id);
  208.                 $objetPrixRigueur $this->prixRigueurRepository->findOneBy(["produit"=>$objetProduit'infoPrixRigueur'=>$infoQuantite["prix"] ]);
  209.                 $this->saveLigneCommande($em$codeVente=rand(), $objetInfoLivrer NULL$objetCommande$objetProduit$objetPrixRigueur$infoQuantite["quantite"], $idLigneCommande 0$etat=1$this->ligneCommandeRepository) ;
  210.                 $montantTotal  $infoQuantite["prix"] * $infoQuantite["quantite"];
  211.                 $msg .=  "%0A".$objetProduit->getNomProduit()." ...... "$infoQuantite["prix"] ." x ".$infoQuantite["quantite"]." =".$montantTotal ."%0A";
  212.                 $total += $montantTotal
  213.             }
  214.         }
  215.         $objetCommande->setMontantCommande($total);
  216.         $em->persist($objetCommande);
  217.         $em->flush();
  218.         //reponse 
  219.         $rep["msg"]=$msg ;// "Commande effectuée avec succes ! ";
  220.         $session->remove("panier");
  221.         
  222.         return new Response(json_encode($rep));
  223.     }
  224. }