src/Controller/Front/CartController.php line 65

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: Slim Sayari
  5.  * Date: 10/07/2019
  6.  * Time: 13:43
  7.  */
  8. namespace App\Controller\Front;
  9. use App\Entity\AbonnementPro;
  10. use App\Entity\Accessoire;
  11. use App\Entity\Adresse;
  12. use App\Entity\Attribut;
  13. use App\Entity\CartDetail;
  14. use App\Entity\CompteAbonnementProCommandesFactures;
  15. use App\Entity\CompteAbonnementProFacture;
  16. use App\Entity\CompteAbonnementProFactureUtilisateur;
  17. use App\Entity\Orders;
  18. use App\Entity\PriceProduct;
  19. use App\Entity\Product;
  20. use App\Entity\ProductAttribute;
  21. use App\Entity\RecapVirement;
  22. use Symfony\Component\HttpFoundation\RedirectResponse;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  25. use Twig\Environment;
  26. use Symfony\Component\HttpFoundation\Response;
  27. use Symfony\Component\HttpFoundation\Request;
  28. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  29. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  30. use Doctrine\ORM\EntityManagerInterface;
  31. use Symfony\Contracts\Translation\TranslatorInterface;
  32. use App\Services\Liseuse;
  33. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  34. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  35. use Spatie\PdfToImage\Pdf;
  36. use Imagick;
  37. use App\Services\ProductService;
  38. use App\Services\CartService;
  39. use App\Entity\Cart;
  40. class CartController extends AbstractController
  41. {
  42.     private $em;
  43.     private $liseuse_service;
  44.     private $session;
  45.     private $params;
  46.     private $product_service;
  47.     private $cart_service;
  48.     public function __construct(SessionInterface $session ,Liseuse $liseuse_service EntityManagerInterface $em,CartService $cart_serviceProductService $product_service,ParameterBagInterface $params)
  49.     {
  50.         $this->em $em;
  51.         $this->liseuse_service $liseuse_service;
  52.         $this->session $session;
  53.         $this->params $params;
  54.         $this->product_service $product_service;
  55.         $this->cart_service $cart_service;
  56.     }
  57.     /**
  58.      * @Route("/panier/block", name="panier_block",options={"expose"=true})
  59.      */
  60.     public function getBlock(Request $request) : Response
  61.     {
  62.         $tokenCart $this->session->get('token_cart');
  63.         $cart null;
  64.         if($tokenCart){
  65.             $cart $this->em->getRepository(Cart::class)->findOneBy(array('token'=>$tokenCart)); // cart
  66.         }
  67.         //check abonnementPro
  68.         $user $this->getUser();
  69.         $cartId 0;
  70.         if($cart)
  71.             $cartId $cart->getId();
  72.         $checkPanierVide $this->cart_service->checkPanierVide($cart);
  73.         if($checkPanierVide){
  74.             $response $this->render('front/panier/cart_vide.html.twig');
  75.         }else {
  76.             $abonnementPro $this->cart_service->checkAbonnementToCartOrOrder($user$cartId);
  77.             $response $this->render('front/panier/cart_header.html.twig', [
  78.                 'cart' => $cart,
  79.                 'abonnementPro' => $abonnementPro
  80.             ]);
  81.         }
  82.         return $response;
  83.     }
  84.     /**
  85.      * @Route("/get-price-panier-abonnement/{tokenCart}-{type}", name="get_price_panier_abonnement",options={"expose"=true})
  86.      */
  87.     public function getPricePanierAbonnement(Request $request,$tokenCart,$type) : Response
  88.     {
  89.         $cart $this->em->getRepository(Cart::class)->findOneBy(array('token'=>$tokenCart)); // cart
  90.         if($type == Adresse::TYPE_COMPTE_ENTREPRISE){
  91.             $price $this->cart_service->gePriceCartWithAbonnementProAbonnementPro::TYPE_PRO,$cart);
  92.             $prixHt $price['prixHtTotal'];
  93.             $prixTtc '<span class="contour_jaune">'.$price['prixTtcTotal'].'€</span>';
  94.             $textAbonnementCheckoutPanier 'A partir de 47,99€ /mois, économisez une multifonction et un graphiste! Des coûts d’impressions fixes vous faisant économiser jusqu’à 50%, la livraison illimitée et gratuite, un dashboard partagé pour vos salariés, un prélèvement à 30 jours et une multitude de nouveaux services comme un(e) graphiste dédiée !';
  95.             $lien $this->generateUrl('abonnementPro_offre');
  96.             $nameLien 'Voir nos abonnements pro';
  97.         }else{
  98.             $price $this->cart_service->gePriceCartWithAbonnementPlus$cart);
  99.             $prixHt $price['prixHtTotal'];
  100.             $prixTtc '<span class="contour_jaune">'.$price['prixTtcTotal'].'€</span>';
  101.             $textAbonnementCheckoutPanier 'Pour 4,99€/mois résiliable à tout moment en 1 clic, 10% d’économie sur tous vos achats + livraison gratuite illimitée.';
  102.             $lien $this->generateUrl('checkout_abonnement');
  103.             $nameLien 'Abonnez-vous ';
  104.         }
  105.         $array = [
  106.             'prixHt'=> $prixHt,
  107.             'prixTtc'=> $prixTtc,
  108.             'textAbonnementCheckoutPanier'=> $textAbonnementCheckoutPanier,
  109.             'lien'=> $lien,
  110.             'nameLien'=> $nameLien,
  111.         ];
  112.         $response = new Response();
  113.         $response->setContent(json_encode($array));
  114.         return $response;
  115.     }
  116.     /**
  117.     * @Route("/edit-doc-page-2", name="edit_pdf_page2")
  118.     */
  119.     public function editPDFPage2(Request $request) : Response
  120.     {
  121.         $response $this->render('front/liseuse-papier/edit-doc-page.html.twig');
  122.         return $response;
  123.     }
  124.     /**
  125.      * @Route("/edit-doc-page", name="edit_pdf_page")
  126.      */
  127.     public function editPDFPage(Request $request) : Response
  128.     {
  129.         $response $this->render('front/liseuse-papier/edit-doc-page-2.html.twig');
  130.         return $response;
  131.     }
  132.     /**
  133.      * @Route("/get-invoice-order/{id}/{token}", name="get_invoice_order")
  134.      * @IsGranted("ROLE_USER")
  135.      */
  136.     public function getInvoiceOrder(Request $request,$id,$token=null) : Response
  137.     {
  138.         $response = new Response();
  139.         if($token){
  140.             $order $this->em->getRepository(Orders::class)->findOneBy(['id' => $id,'tokenOrder' => $token]);
  141.         }else{
  142.             $order $this->em->getRepository(Orders::class)->find($id);
  143.             if($order && $order->getTokenOrder()){
  144.                 $response->setContent(0);
  145.                 return $response;
  146.             }
  147.         }
  148.         if ($order) {
  149.             $pathFacture $this->params->get('uploads_directory') . '/facture/' $order->getPathFacture();
  150.             $response->setContent(file_get_contents($pathFacture));
  151.             $response->headers->set('Content-Type''application/force-download');
  152.             $response->headers->set('Content-disposition''filename=invoice-order.pdf');
  153.             $response->setStatusCode(200);
  154.             return $response;
  155.         }
  156.         $response->setContent(0);
  157.         return $response;
  158.     }
  159.     /**
  160.      * @Route("/get-invoice-virement/{id}/{token}", name="get_invoice_virement")
  161.      * @IsGranted("ROLE_USER")
  162.      */
  163.     public function getInvoiceVirement(Request $request,$id,$token=null) : Response
  164.     {
  165.         $response = new Response();
  166.         $response = new Response();
  167.         if($token){
  168.             $order $this->em->getRepository(Orders::class)->findOneBy(['id' => $id,'tokenOrder' => $token]);
  169.         }else{
  170.             $order $this->em->getRepository(Orders::class)->find($id);
  171.             if($order && $order->getTokenOrder()){
  172.                 $response->setContent(0);
  173.                 return $response;
  174.             }
  175.         }
  176.         if ($order && $order->getPathFactureVirement()) {
  177.             $pathFacture $this->params->get('uploads_directory') . '/facture/' $order->getPathFactureVirement();
  178.             $response->setContent(file_get_contents($pathFacture));
  179.             $response->headers->set('Content-Type''application/force-download');
  180.             $response->headers->set('Content-disposition''filename=invoice-virement-order.pdf');
  181.             $response->setStatusCode(200);
  182.             return $response;
  183.         }
  184.         $response->setContent(0);
  185.         return $response;
  186.     }
  187.     /**
  188.      * @Route("/get-invoice-abonnement-pro/{id}-{idCompteAbonnementPro}", name="get_invoice_abonnement_pro")
  189.      * @IsGranted("ROLE_USER")
  190.      */
  191.     public function getInvoiceAbonnementPro(Request $request,$id,$idCompteAbonnementPro) : Response
  192.     {
  193.         $facture $this->em->getRepository(CompteAbonnementProFacture::class)->findOneBy(['id'=>$id,'compteAbonnementPro'=>$idCompteAbonnementPro]);
  194.         $response = new Response();
  195.         if($facture){
  196.             if ($facture->getPathFacture()) {
  197.                 $pathFacture $this->params->get('uploads_directory') . '/facture/' $facture->getPathFacture();
  198.                 $response->setContent(file_get_contents($pathFacture));
  199.                 $response->headers->set('Content-Type''application/force-download');
  200.                 $response->headers->set('Content-disposition''filename=invoice-abonnement-pro.pdf');
  201.                 $response->setStatusCode(200);
  202.                 return $response;
  203.             }
  204.         }
  205.         $response->setContent(0);
  206.         return $response;
  207.     }
  208.     /**
  209.      * @Route("/get-invoice-abonnement-pro-commande/{id}-{idCompteAbonnementPro}", name="get_invoice_abonnement_pro_commande")
  210.      * @IsGranted("ROLE_USER")
  211.      */
  212.     public function getInvoiceAbonnementProCommande(Request $request,$id,$idCompteAbonnementPro) : Response
  213.     {
  214.         $facture $this->em->getRepository(CompteAbonnementProCommandesFactures::class)->findOneBy(['id'=>$id,'compteAbonnementPro'=>$idCompteAbonnementPro]);
  215.         $response = new Response();
  216.         if($facture){
  217.             if ($facture->getPathFacture()) {
  218.                 $pathFacture $this->params->get('uploads_directory') . '/facture/' $facture->getPathFacture();
  219.                 $response->setContent(file_get_contents($pathFacture));
  220.                 $response->headers->set('Content-Type''application/force-download');
  221.                 $response->headers->set('Content-disposition''filename=invoice-abonnement-pro-orders.pdf');
  222.                 $response->setStatusCode(200);
  223.                 return $response;
  224.             }
  225.         }
  226.         $response->setContent(0);
  227.         return $response;
  228.     }
  229.     /**
  230.      * @Route("/get-invoice-abonnement-pro-utilisateur/{id}-{idCompteAbonnementPro}", name="get_invoice_abonnement_pro_utilisateur")
  231.      * @IsGranted("ROLE_USER")
  232.      */
  233.     public function getInvoiceAbonnementProUtilisateur(Request $request,$id,$idCompteAbonnementPro) : Response
  234.     {
  235.         $facture $this->em->getRepository(CompteAbonnementProFactureUtilisateur::class)->findOneBy(['id'=>$id,'compteAbonenemntPro'=>$idCompteAbonnementPro]);
  236.         $response = new Response();
  237.         if($facture){
  238.             if ($facture->getPathFacture()) {
  239.                 $pathFacture $this->params->get('uploads_directory') . '/facture/' $facture->getPathFacture();
  240.                 $response->setContent(file_get_contents($pathFacture));
  241.                 $response->headers->set('Content-Type''application/force-download');
  242.                 $response->headers->set('Content-disposition''filename=invoice-abonnement-pro-utilisateur.pdf');
  243.                 $response->setStatusCode(200);
  244.                 return $response;
  245.             }
  246.         }
  247.         $response->setContent(0);
  248.         return $response;
  249.     }
  250.     /**
  251.      * @Route("/get-recap-virement/{id}", name="get_recap_virement")
  252.      * @IsGranted("ROLE_USER")
  253.      */
  254.     public function getRecapVirement(Request $request,$id) : Response
  255.     {
  256.         $order $this->em->getRepository(RecapVirement::class)->find(['id'=>$id]);
  257.         $response = new Response();
  258.         if($order && $order->getPdfRecap()){
  259.             $pathFacture $this->params->get('uploads_directory') . '/facture/' .$order->getPdfRecap();
  260.             $response->setContent(file_get_contents($pathFacture));
  261.             $response->headers->set('Content-Type''application/force-download');
  262.             $response->headers->set('Content-disposition''filename=recap-virement.pdf');
  263.             $response->setStatusCode(200);
  264.             return $response;
  265.         }
  266.         $response->setContent(0);
  267.         return $response;
  268.     }
  269. }