src/Controller/Front/LiseuseController.php line 339

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\Accessoire;
  10. use App\Entity\Attribut;
  11. use App\Entity\CartDetail;
  12. use App\Entity\CartDetailAccessoire;
  13. use App\Entity\FilesEdit;
  14. use App\Entity\PriceProduct;
  15. use App\Entity\Product;
  16. use App\Entity\ProductAttribute;
  17. use Symfony\Component\HttpFoundation\RedirectResponse;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  20. use Twig\Environment;
  21. use Symfony\Component\HttpFoundation\Response;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Doctrine\ORM\EntityManagerInterface;
  26. use Symfony\Contracts\Translation\TranslatorInterface;
  27. use App\Services\Liseuse;
  28. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  29. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  30. use Spatie\PdfToImage\Pdf;
  31. use Imagick;
  32. use App\Services\ProductService;
  33. use App\Services\CartService;
  34. use App\Entity\Cart;
  35. class LiseuseController extends AbstractController
  36. {
  37.     private $em;
  38.     private $liseuse_service;
  39.     private $session;
  40.     private $params;
  41.     private $product_service;
  42.     private $cart_service;
  43.     public function __construct(SessionInterface $session ,Liseuse $liseuse_service EntityManagerInterface $em,CartService $cart_serviceProductService $product_service,ParameterBagInterface $params)
  44.     {
  45.         $this->em $em;
  46.         $this->liseuse_service $liseuse_service;
  47.         $this->session $session;
  48.         $this->params $params;
  49.         $this->product_service $product_service;
  50.         $this->cart_service $cart_service;
  51.     }
  52.     /**
  53.      * @Route("/liseuse/{token}", name="liseuse",options={"expose"=true})
  54.      */
  55.     public function index(Request $request,$token null) : Response
  56.     {
  57.         $tokenCart $this->session->get('token_cart');
  58.         $papiers null;
  59.         $cart null;
  60.         if($tokenCart){
  61.             $cart $this->em->getRepository(Cart::class)->findOneBy(array('token'=>$tokenCart)); // cart
  62.             if($cart && count($cart->getCartDetail())>0){
  63.                 $papiers $this->em->getRepository(CartDetail::class)->findBy(array('cart'=>$cart->getId(),'typeProduct'=> Product::PAPIER),array('id'=>'DESC')); // cart detail
  64.             }
  65.         }
  66.         if($papiers){
  67.             if($token){
  68.                 $papierCourant =  $this->em->getRepository(CartDetail::class)->findOneBy(array('token'=>$token));
  69.                 $papiers $this->em->getRepository(CartDetail::class)->findOrderByfirstList($cart->getId(),$token); // cart detail
  70.             }else{
  71.                 $papierCourant =  $this->em->getRepository(CartDetail::class)->findOneBy(array('cart'=>$cart->getId(),'typeProduct'=> Product::PAPIER),array('id'=>'DESC'));
  72.             }
  73.         }else{
  74.             $papierCourant null;
  75.         }
  76.         $productPapier $this->em->getRepository(Product::class)->findOneBy(array('typeProduct'=>Product::PAPIER));
  77.         //check abonnementPro
  78.         $user $this->getUser();
  79.         $abonnementPro $this->cart_service->checkAbonnementToCartOrOrder($user,$cart $cart->getId():null);
  80.         $resultAbo $this->cart_service->checkB2bUser($this->getUser());
  81.         $abonnement $resultAbo['abonnement'];
  82.         $isAbonnementProInCart $resultAbo['isAbonnementProInCart'];
  83.         $dataResponse = [
  84.             'papierCourant' => $papierCourant,  // le pdf courant
  85.             'papiers' => $papiers//list des pdf
  86.             'productPapier' => $productPapier ,//product papier pdf
  87.             'blockOption' => $productPapier $this->product_service->getBlockPapier($papierCourant,$productPapier->getId(),Product::PAPIER,$papiers,$abonnementPro) : null //block option
  88.             'blockOptionMobile' => $productPapier $this->product_service->getBlockPapierMobile($papierCourant,$productPapier->getId(),Product::PAPIER,$papiers) : null //block option
  89.             'blockPrix' =>$this->liseuse_service->getBlockPrixLiseuse($cart) , //block Prix
  90.             'cart' => $cart,
  91.             'abonnementPro' => $abonnementPro,
  92.             'displayBtnDuplicate' => $papierCourant count($papierCourant->getCart()->getCartDetail())>true:false:false,
  93.             'checkIsduplicatePerference' => $papierCourant && $this->product_service->checkIsduplicatePerference($papierCourant->getToken()) ? true  :false,
  94.         ];
  95.         if($abonnement['is_abonnemen_pro'] || $isAbonnementProInCart){
  96.             $response $this->render('front/b2b/imprimer-relier/liseuse.html.twig',$dataResponse);
  97.         }else{
  98.             $response $this->render('front/liseuse-papier/index.html.twig',$dataResponse);
  99.         }
  100.         $response->headers->set('Access-Control-Allow-Origin''*');
  101.         $response->headers->set('Access-Control-Allow-Headers''Range');
  102.         $response->headers->set('Access-Control-Expose-Headers''Cache-Control, Content-Encoding, Content-Range');
  103.         return $response;
  104.     }
  105.     /**
  106.      * @Route("/liseuse-upload", name="liseuse_upload",options={"expose"=true})
  107.      */
  108.     public function upload(Request $request){
  109.         $files $request->files->get('fileUpload');
  110.         $idProduct $request->request->get('id_product');
  111.         $uploadfile $this->liseuse_service->upload($files); // uplaod file response(filename,filenameOriginal)
  112.         if($uploadfile){
  113.             $cart $this->cart_service->createCart(true); // create cart and token
  114.             //get product
  115.             $product $this->em->getRepository(Product::class)->find($idProduct);
  116.             // get productAtribute default
  117.             $productAttributeDefault $this->em->getRepository(ProductAttribute::class)->findOneBy(array('product'=>$product,'isDefault' => true,'isEnabled'=>true));
  118.             if(!$productAttributeDefault){
  119.                 $productAttributeDefault $this->em->getRepository(ProductAttribute::class)->findOneBy(array('product'=>$product,'isEnabled'=>true));
  120.             }
  121.             // nbr page
  122.             $token $this->liseuse_service->generateUniqueFileName();
  123.             $getTabNbrPapier $this->liseuse_service->addNumbrePage($uploadfile['filename'],$token); // add nbr color black&white response(nbrColor,nbrBlackWhite)
  124.             // tableau qty
  125.             $tabQty = array(
  126.                 'qtyColor'=> (int)$getTabNbrPapier['nbrColor'],
  127.                 'qtyNoir'=> (int)$getTabNbrPapier['nbrBlackWhite'],
  128.                 'qty'=> (int)$getTabNbrPapier['nbrBlackWhite'] + (int)$getTabNbrPapier['nbrColor'] ,
  129.             );
  130.             // tableau file
  131.             $tabFile = array(
  132.                 'file'=> $uploadfile['filename'],
  133.                 'name'=> $uploadfile['filenameOriginal']
  134.             );
  135.             if($getTabNbrPapier['nbrColor'] > 0){
  136.                 $accesoireColor $this->em->getRepository(Accessoire::class)->findOneBy(array('typeAccessoire' => Accessoire::COULEUR,'typeCouleur'=>Accessoire::TYPE_COULEUR));
  137.             }else{
  138.                 $accesoireColor $this->em->getRepository(Accessoire::class)->findOneBy(array('typeAccessoire' => Accessoire::COULEUR,'typeCouleur'=>Accessoire::TYPE_NOIR));
  139.             }
  140.             // add to cartDetail
  141.             if($product and $product->getTypeProduct() ==  Product::PAPIER_POSTE)
  142.                 $is_poste true;
  143.             else
  144.                 $is_poste false;
  145.              $user $this->getUser();
  146. //             if(((int)$getTabNbrPapier['nbrBlackWhite'] + (int)$getTabNbrPapier['nbrColor']) >= 2){
  147. //                 $isReluire = true;
  148. //             }else{
  149. //                 $isReluire = false;
  150. //             }
  151.              $isReluire false;
  152.              $this->cart_service->addToCartPapier($user,$is_poste,$token,$cart,$product,$productAttributeDefault,$tabQty,1,$tabFile,$accesoireColor,$isReluire,$getTabNbrPapier['firstImage'],null,true);
  153.             $content $uploadfile['filename'];
  154.         }else{
  155.             $content false;
  156.         }
  157.         $response = new Response();
  158.         $response->setStatusCode(200);
  159.         $response->setContent($content);
  160.         return $response;
  161.     }
  162.     /**
  163.      * @Route("/liseuse-update", name="liseuse_update",options={"expose"=true})
  164.      */
  165.     public function update(Request $request){
  166.         $data $request->request->all();
  167.         $tokenCart $data['token_cart_detail'];
  168.         $product $this->em->getRepository(Product::class)->find($data['product_id']);
  169.         $is_reluire $data['isReluire'];
  170.         $format $this->em->getRepository(Attribut::class)->find($data['format']);
  171.         $gramage $this->em->getRepository(Attribut::class)->find($data['grammage']);
  172.         $productAttribute $this->em->getRepository(ProductAttribute::class)->findOneBy(array('format'=>$format,'gramage'=>$gramage,'rectoverso'=>$data['rectoverso'],'isEnabled'=>true));
  173.         $qty = array(
  174.             'qty'=>$data['qty_total'],
  175.             'qtyColor'=>$data['qty_color'],
  176.             'qtyNoir'=>$data['qty_noir'],
  177.         );
  178.         $nbrPapier$data['nbrCopie'];
  179.         $accesoireColor $this->em->getRepository(Accessoire::class)->find($data['couleur']);
  180.         $accReluire = isset($data['reluire'])?$this->em->getRepository(Accessoire::class)->find($data['reluire']):null;
  181.         $accReluireArray = array(
  182.             'couleur'=> '',
  183.             'couleurDos'=> '',
  184.             'grandCote'=> false,
  185.             'petitCote'=> false,
  186.             'papierCovertureMat'=> false,
  187.             'papierCovertureBrillant'=> false,
  188.         );
  189.         if(isset($data['cote']) && $data['cote'] == 'petitCote')
  190.             $accReluireArray['petitCote'] = true;
  191.         if(isset($data['cote']) && $data['cote'] == 'grandCote')
  192.             $accReluireArray['grandCote'] = true;
  193.         if(isset($data['couleurDos']))
  194.             $accReluireArray['couleurDos'] = $data['couleurDos'];
  195.         if(isset($data['couleurR']))
  196.             $accReluireArray['couleur'] = $data['couleurR'];
  197.         if(isset($data['papierCoverture']) && $data['papierCoverture'] == 'papierCovertureMat')
  198.             $accReluireArray['papierCovertureMat'] = true;
  199.         if(isset($data['papierCoverture']) && $data['papierCoverture'] == 'papierCovertureBrillant')
  200.             $accReluireArray['papierCovertureBrillant'] = true;
  201.         $arrayDocCote = array();
  202.         if(isset($data['coteDoc']) && $data['coteDoc'] == 'petitCoteDoc'){
  203.             $arrayDocCote['petitCote'] = true;
  204.         }
  205.         if(isset($data['coteDoc']) && $data['coteDoc'] == 'grandCoteDoc'){
  206.             $arrayDocCote['grandCote'] = true;
  207.         }
  208.         $commantaire= isset($data['commentaire'])?trim($data['commentaire']):null;
  209.         $marge= isset($data['marge'])?true:false;
  210.         $isDecoupeDoc= isset($data['isDecoupeDoc'])?true:false;
  211.         // update detail cart
  212.         if($product and $product->getTypeProduct() ==  Product::PAPIER_POSTE$is_poste true;
  213.         else $is_poste false;
  214.         $typeCourier = (isset($data['courier']))?$data['courier']: null//type courier if poste
  215.         $souhaiteStr = (isset($data['souhaite_str']))?$data['souhaite_str']: null;
  216.         $this->cart_service->updateToCartPapier($this->getUser(),$typeCourier,$is_poste,$tokenCart,$product,$productAttribute,$qty,$nbrPapier,$accesoireColor,$is_reluire,$accReluire,$accReluireArray,$commantaire,false,$souhaiteStr,$arrayDocCote,$isDecoupeDoc);
  217.         $cartDetail $this->em->getRepository(CartDetail::class)->findOneBy(array('token' => $tokenCart));
  218.         $gramageSelect $this->liseuse_service->getSelectGramagePapier($cartDetail,$this->getUser()); // update and get template Grammage
  219.         $this->liseuse_service->duplicatePerference$tokenCart); // appliquer les paramettre pour tous les doc if true;
  220.         $this->em->refresh($cartDetail);
  221.         // block prix
  222.         if($product->getTypeProduct() == Product::PAPIER){
  223.             $blockPrix $this->liseuse_service->getBlockPrixLiseuse($cartDetail->getCart());
  224.         }else{
  225.             $blockPrix $this->liseuse_service->getBlockPrixLiseuse($cartDetail->getCart(),Product::PAPIER_POSTE);
  226.         }
  227.         $blockCart $this->cart_service->getBlockPanier();// block panier
  228.         $resteOfferte $this->liseuse_service->getResteOfferte($cartDetail->getCart()); // reste offerte
  229.         $response = new Response();
  230.         $response->setStatusCode(200);
  231.         $response->setContent(json_encode(
  232.             array(
  233.                 'blockPrix' => $blockPrix,
  234.                 'blockCart' => $blockCart,
  235.                 'resteOfferte' => $resteOfferte,
  236.                 'gramageSelect' => $gramageSelect,
  237.                 'prixdoc' => number_format((float)$cartDetail->getPrixHt(),2).'€ HT'
  238.             ))
  239.         );
  240.         return $response;
  241.     }
  242.     /**
  243.      * @Route("/liseuse-deleted/{token}/{page}", name="liseuse_deleted",options={"expose"=true})
  244.      */
  245.     public function deleted(Request $request,$token,$page 'liseuse'){
  246.         $papiers $this->em->getRepository(CartDetail::class)->findOneBy(array('token'=>$token));
  247.         $path $this->redirectToRoute('accueil');;
  248.         if($papiers){
  249.             $product $papiers->getProduct();
  250.             if($product->getTypeProduct() == Product::PAPIER){
  251.                 $path $this->redirectToRoute('liseuse');
  252.             }else if(!in_array($product->getTypeProduct(),[Product::PAPIER,Product::SIMPLE,Product::PAPIER_POSTE])){
  253.                 $path $this->redirectToRoute('product_option',['product'=>$product->getId()]);
  254.             }
  255.             $cart $papiers->getCart();
  256.             $this->em->remove($papiers);
  257.             $this->em->flush();
  258.             $this->cart_service->updatePriceCart($cart);
  259.         }
  260.         return $path;
  261. //        if ($page == 'liseuse'){
  262. //            return  $this->redirectToRoute('liseuse');
  263. //        }elseif($page == 'checkout'){
  264. //            return  $this->redirectToRoute('checkout');
  265. //        }elseif($page == 'liseuse_poste'){
  266. //            return  $this->redirectToRoute('liseuse_poste');
  267. //        }elseif($page == 'checkout_poste'){
  268. //            return  $this->redirectToRoute('checkout_poste');
  269. //        }else{
  270. //            return  $this->redirectToRoute('accueil');
  271. //        }
  272.     }
  273.     /**
  274.      * @Route("/liseuse-duplicate-perference/{token}-{isAppliqueParam}", name="liseuse_duplicate_perference",options={"expose"=true})
  275.      */
  276.     public function duplicatePerference(Request $request,$token,$isAppliqueParam){
  277.         $this->cart_service->addOrRemoveAppliqueParam($token,$isAppliqueParam);
  278.         $bool 0;
  279.         if($isAppliqueParam){
  280.             if($this->liseuse_service->checkIsduplicatePerference$token)) {
  281.                 $this->liseuse_service->duplicatePerference($token);
  282.                 $bool 1;
  283.             }
  284.         }
  285.         $response = new Response();
  286.         $response->setStatusCode(200);
  287.         $response->setContent($bool);
  288.         return $response;
  289.     }
  290.     /**
  291.      * @Route("/get-tarif", name="get_tarif",options={"expose"=true})
  292.      */
  293.     public function getTarif(Request $request){
  294.         $data $request->request->all();
  295.         //get product
  296.         $product $this->em->getRepository(Product::class)->findOneBy(array('typeProduct'=> Product::PAPIER));
  297.         // get productAtribute default
  298.         $productAttributeDefault $this->em->getRepository(ProductAttribute::class)->findOneBy(array('product'=>$product,'isDefault' => true,'isEnabled'=>true));
  299.         if(!$productAttributeDefault){
  300.             $productAttributeDefault $this->em->getRepository(ProductAttribute::class)->findOneBy(array('product'=>$product,'isEnabled'=>true));
  301.         }
  302.         // tableau qty
  303.         $tabQty = array(
  304.             'qtyColor'=> $data['nbrColor'],
  305.             'qtyNoir'=> $data['nbrBlackWhite'],
  306.             'qty'=> $data['nbrBlackWhite'] + $data['nbrColor'] ,
  307.         );
  308.         $prix $this->liseuse_service-> getTarif$product$productAttributeDefault$tabQty$data['is_reluire']);
  309.         $response = new Response();
  310.         $response->setStatusCode(200);
  311.         $response->setContent(json_encode($prix));
  312.         return $response;
  313.     }
  314.     /**
  315.      * @Route("/get-tarif-abonnement", name="get_tarif_abonnement",options={"expose"=true})
  316.      */
  317.     public function getTarifAbonnement(Request $request){
  318.         $data $request->request->all();
  319.         //get product
  320.         $product $this->em->getRepository(Product::class)->findOneBy(array('typeProduct'=> Product::PAPIER));
  321.         // get productAtribute default
  322.         $productAttributeDefault $this->em->getRepository(ProductAttribute::class)->findOneBy(array('product'=>$product,'isDefault' => true,'isEnabled'=>true));
  323.         if(!$productAttributeDefault){
  324.             $productAttributeDefault $this->em->getRepository(ProductAttribute::class)->findOneBy(array('product'=>$product,'isEnabled'=>true));
  325.         }
  326.         // tableau qty
  327.         $tabQty = array(
  328.             'qtyColor'=> $data['nbrColor'],
  329.             'qtyNoir'=> $data['nbrBlackWhite'],
  330.             'qty'=> $data['nbrBlackWhite'] + $data['nbrColor'] ,
  331.         );
  332.         $prix $this->liseuse_service-> getTarif$product$productAttributeDefault$tabQty$data['is_reluire']);
  333.         $prixAbonnement $this->liseuse_service-> getTarifAbonnement$product,$data['typeAbonnenemt'], $productAttributeDefault$tabQty$data['is_reluire']);
  334.         $response = new Response();
  335.         $response->setStatusCode(200);
  336.         $response->setContent(json_encode(array('prix'=>$prix,'prixAbonnement'=>$prixAbonnement)));
  337.         return $response;
  338.     }
  339.     /**
  340.      * @Route("/check-option-select-reluire", name="check_option_select_reluire",options={"expose"=true})
  341.      */
  342.     public function checkOptionSelectReluire(Request $request){
  343.         $data $this->cart_service->checkOptionSelectReluire();
  344.         $response = new Response();
  345.         $response->setStatusCode(200);
  346.         $response->setContent(json_encode($data));
  347.         return $response;
  348.     }
  349.     /**
  350.      * @Route("/get-pdf-top-100-ajax/{token}", name="liseuse_pdf_top_100_ajax",options={"expose"=true})
  351.      */
  352.     public function getTemplate(Request $request,$token) : Response
  353.     {
  354.         $data $this->product_service->getPdfTop100($request);
  355.         $detailCart $this->em->getRepository(CartDetail::class)->findOneBy(array('token' => $token));
  356.         $response $this->render('front/top-100-product/resultsLiseuse.html.twig', ['products'=>$data,'papierCourant'=>$detailCart]);
  357.         return $response;
  358.     }
  359.     /**
  360.      * @Route("/append-pdf-top-100-ajax/{token}", name="append_pdf_top_100_ajax",options={"expose"=true})
  361.      */
  362.     public function appendTemplate(Request $request,$token) : Response
  363.     {
  364.         $data $this->product_service->getPdfTop100($request);
  365.         $detailCart $this->em->getRepository(CartDetail::class)->findOneBy(array('token' => $token));
  366.         if($data){
  367.             $response $this->render('front/top-100-product/appendResultsLiseuse.html.twig', ['products'=>$data,'papierCourant'=>$detailCart]);
  368.         }else{
  369.             $response = new Response();
  370.             $response->setStatusCode(200);
  371.             $response->setContent(0);
  372.         }
  373.         return $response;
  374.     }
  375.     /**
  376.      * @Route("/upload-file-modif/{token}", name="upload_file_modif", options={"expose"=true})
  377.      */
  378.     public function uploadModif(Request $request,$token): Response
  379.     {
  380.         $this->liseuse_service->uploadPdfModif($request->files->get('fileModif'),$token);
  381.         $response = new Response();
  382.         $response->setStatusCode(200);
  383.         $response->setContent(1);
  384.         return $response;
  385.     }
  386.     /**
  387.      * @Route("/download-doc/{token}", name="download_doc_liseuse")
  388.      */
  389.     public function downloadRequest $request,$token){
  390.         $cartDetail $this->em->getRepository(CartDetail::class)->findOneBy(array('token'=>$token));
  391.         $file '';
  392.         $fileName '';
  393.         if($cartDetail ){
  394.             if(!$cartDetail->getIsTopImp()) {
  395.                 if ($cartDetail->getIsModif()) {
  396.                     if($this->getUser()) {
  397.                         $file $this->params->get('pdfModif_directory') . '/' $cartDetail->getFilePapier();
  398.                     }
  399.                 } else {
  400.                     $file=$this->params->get('uploads_directory') . '/' $cartDetail->getFilePapier();
  401.                 }
  402.             }else{
  403.                 $file$this->params->get('productPdf_directory') . '/' $cartDetail->getFilePapier();
  404.             }
  405.             $fileName $cartDetail->getFilePapier();
  406.         }
  407.         $response = new Response();
  408.         if($file){
  409.             $response->setContent(file_get_contents($file));
  410.             $response->headers->set('Content-Type''application/force-download');
  411.             $response->headers->set('Content-disposition''filename='.$fileName);
  412.             $response->setStatusCode(200);
  413.             return $response;
  414.         }
  415.         return $this->render('bundles/TwigBundle/Exception/error.html.twig');
  416.     }
  417.     /**
  418.      * @Route("/file-edit-upload", name="file_edit_upload",options={"expose"=true})
  419.      */
  420.     public function uploadFileEdit(Request $request)
  421.     {
  422.         $files $request->files->get('fileUploadEdit');
  423.         $uploadfile $this->liseuse_service->upload($files); // uplaod file response(filename,filenameOriginal)
  424.         if($uploadfile){
  425.             $content = [];
  426.             $token $this->liseuse_service->generateUniqueFileName();
  427.             $fileEntity = new FilesEdit();
  428.             $fileEntity->setFilePapierName($uploadfile['filenameOriginal']);
  429.             $fileEntity->setFilePapier($uploadfile['filename']);
  430.             $fileEntity->setToken($token);
  431.             $this->em->persist($fileEntity);
  432.             $this->em->flush();
  433.             $arrayFile $this->session->get('filesEdit');
  434.             if(!$arrayFile)$arrayFile= [];
  435.             $arrayFile[$token] = $fileEntity->getId();
  436.             $this->session->set('filesEdit',$arrayFile);
  437.             $content['filePath'] = $request->getScheme() . '://' $request->getHttpHost(). $request->getBasePath(). '/uploads/'.$uploadfile['filename'];
  438.             $content['fileName'] = $uploadfile['filename'];
  439.             $content['fileNameOrigin'] = $uploadfile['filenameOriginal'];
  440.             $content['id'] = $fileEntity->getId();
  441.             $content['token'] = $token;
  442.         }else{
  443.             $content false;
  444.         }
  445.         $response = new Response();
  446.         $response->setStatusCode(200);
  447.         $response->setContent(json_encode($content));
  448.         return $response;
  449.     }
  450.     /**
  451.      * @Route("/files-editeur/{token}", name="files_editeur",options={"expose"=true})
  452.      */
  453.     public function filesEditeur(Request $request,$token=null)
  454.     {
  455.         $idsFiles =  $this->session->get('filesEdit');
  456.         if(!$idsFiles){
  457.             $files null;
  458.             $file null;
  459.         }else {
  460.             $files $this->em->getRepository(FilesEdit::class)->findByIds($idsFiles);
  461.             if ($token) {
  462.                 $file $this->em->getRepository(FilesEdit::class)->findOneBy(array('token' => $token));
  463.             } else {
  464.                 $file $files $files[0] : null;
  465.             }
  466.         }
  467.         $response $this->render('front/liseuse-papier/editPdf.html.twig',[
  468.             'files'=>$files,
  469.             'file'=>$file
  470.         ]);
  471.         $response->headers->set('Access-Control-Allow-Origin''*');
  472.         $response->headers->set('Access-Control-Allow-Headers''Range');
  473.         $response->headers->set('Access-Control-Expose-Headers''Cache-Control, Content-Encoding, Content-Range');
  474.         return $response;
  475.     }
  476.     /**
  477.      * @Route("/file-edit-modif/{idProduct}-{idFile}", name="file_edit_modif_to_liseuse",options={"expose"=true})
  478.      */
  479.     public function uploadFileEditModifToLiseuse(Request $request,$idProduct,$idFile): Response
  480.     {
  481.         $token $this->cart_service->addToCartPapierEdit($request->files->get('fileModif'),$idProduct,$idFile,$this->getUser());
  482.         if($token){
  483.             $rep=[
  484.                 'success' => true,
  485.                 'token'=> $token
  486.             ];
  487.         }else{
  488.             $rep=[
  489.                 'success' => false
  490.             ];
  491.         }
  492.         $response = new Response();
  493.         $response->setStatusCode(200);
  494.         $response->setContent(json_encode($rep));
  495.         return $response;
  496.     }
  497.     /**
  498.      * @Route("/get-menu-plus-pspdf", name="get_menu_plus_pspdf",options={"expose"=true})
  499.      */
  500.     public function getMenuPlusPspdf(Request $request): Response
  501.     {
  502.         return $this->render('front/liseuse-papier/menu_plus_pspdf.html.twig');
  503.     }
  504.     /**
  505.      * @Route("/download-file-edit/{id}", name="download_file_edit", options={"expose"=true})
  506.      */
  507.     public function downloadFileEditRequest $request,$id){
  508.         $fileEdit $this->em->getRepository(FilesEdit::class)->find($id);
  509.         $files $request->files->get('fileUploadEdit');
  510.         $uploadfile $this->liseuse_service->ecraseFileEdit($files,$fileEdit);
  511.         $response = new Response();
  512.         $response->setContent('ok');
  513.         return $response;
  514.     }
  515.     /**
  516.      * @Route("/get-file-edit/{name}", name="get_file_link_edit", options={"expose"=true})
  517.      */
  518.     public function getLinkFileEditRequest $request,$name){
  519.         $filePth '';
  520.         if($name) {
  521.             $file $this->params->get('uploads_directory') . '/' $name;
  522.             if (file_exists($file)) {
  523.                 $filePth '/uploads/' $name;
  524.             }else{
  525.                 $file $this->params->get('pdfModif_directory') . '/' $name;
  526.                 if (file_exists($file)) {
  527.                     $filePth '/modifPdf/' $name;
  528.                 }
  529.             }
  530.             if (file_exists($file)) {
  531.                 $filePth $request->getScheme() . '://' $request->getHttpHost(). $request->getBasePath().   $filePth ;
  532.             }
  533.         }
  534.         return $this->render('front/liseuse-papier/link_copy_pspdf.html.twig',array('file'=>$filePth));
  535.     }
  536.     /**
  537.      * @Route("/get-file-edit-liseuse/{token}", name="get_file_link_edit_liseuse", options={"expose"=true})
  538.      */
  539.     public function getLinkFileEditLiseuseRequest $request,$token){
  540.         $cartDetail $this->em->getRepository(CartDetail::class)->findOneBy(array('token'=>$token));
  541.         $filePth '';
  542.         if($cartDetail && !$cartDetail->getIsTopImp()){
  543.             if($cartDetail->getIsModif()){
  544.                 $filePth '/modifPdf/' .$cartDetail->getFilePapier();
  545.             }else{
  546.                 $filePth '/uploads/' $cartDetail->getFilePapier();
  547.             }
  548.             $filePth $request->getScheme() . '://' $request->getHttpHost(). $request->getBasePath().   $filePth ;
  549.         }
  550.         return $this->render('front/liseuse-papier/link_copy_pspdf.html.twig',array('file'=>$filePth));
  551.     }
  552.     /**
  553.      * @Route("/share-file-edit/{name}", name="share_file_link_edit", options={"expose"=true})
  554.      */
  555.     public function shareLinkFileEditRequest $request,$name){
  556.         $filePth '';
  557.         if($name) {
  558.             $file $this->params->get('uploads_directory') . '/' $name;
  559.             if (file_exists($file)) {
  560.                 $filePth '/uploads/' $name;
  561.             }else{
  562.                 $file $this->params->get('pdfModif_directory') . '/' $name;
  563.                 if (file_exists($file)) {
  564.                     $filePth '/modifPdf/' $name;
  565.                 }
  566.             }
  567.             if (file_exists($file)) {
  568.                 $filePth $request->getScheme() . '://' $request->getHttpHost(). $request->getBasePath().   $filePth ;
  569.             }
  570.         }
  571.         return $this->render('front/liseuse-papier/share_pspdf.html.twig',array('url'=>$filePth));
  572.     }
  573.     /**
  574.      * @Route("/share-file-edit-liseuse/{token}", name="share_file_link_edit_liseuse", options={"expose"=true})
  575.      */
  576.     public function shareLinkFileEditLiseuseRequest $request,$token){
  577.         $cartDetail $this->em->getRepository(CartDetail::class)->findOneBy(array('token'=>$token));
  578.         $filePth '';
  579.         if($cartDetail && !$cartDetail->getIsTopImp()){
  580.             if($cartDetail->getIsModif()){
  581.                 $filePth '/modifPdf/' .$cartDetail->getFilePapier();
  582.             }else{
  583.                 $filePth '/uploads/' $cartDetail->getFilePapier();
  584.             }
  585.             $filePth $request->getScheme() . '://' $request->getHttpHost(). $request->getBasePath().   $filePth ;
  586.         }
  587.         return $this->render('front/liseuse-papier/share_pspdf.html.twig',array('url'=>$filePth));
  588.     }
  589.     /**
  590.      * @Route("/save-file-client/{tokeCartDetail}", name="save_file_client",options={"expose"=true})
  591.      */
  592.     public function saveFileClient(Request $request,$tokeCartDetail)
  593.     {
  594.         $user $this->getUser();
  595.         $result $this->liseuse_service->saveDocClient($tokeCartDetail,$user);
  596.         $response = new Response();
  597.         $response->setStatusCode(200);
  598.         $response->setContent($result?1:0);
  599.         return $response;
  600.     }
  601.     /**
  602.      * @Route("/upload-and-save-file", name="upload_and_save_data",options={"expose"=true})
  603.      */
  604.     public function saveAndUploadFile(Request $request){
  605.         $user $this->getUser();
  606.         $files $request->files->get('fileUpload');
  607.         $uploadfile $this->liseuse_service->upload($files); // uplaod file response(filename,filenameOriginal)
  608.         if($uploadfile){
  609.             // nbr page
  610.             $token $this->liseuse_service->generateUniqueFileName();
  611.             $getTabNbrPapier $this->liseuse_service->addNumbrePage($uploadfile['filename'],$token); // add nbr color black&white response(nbrColor,nbrBlackWhite)
  612.             // tableau
  613.             $tab = array(
  614.                 'qtyColor'=> (int)$getTabNbrPapier['nbrColor'],
  615.                 'qtyNoir'=> (int)$getTabNbrPapier['nbrBlackWhite'],
  616.                 'qty'=> (int)$getTabNbrPapier['nbrBlackWhite'] + (int)$getTabNbrPapier['nbrColor'] ,
  617.                 'file'=> $uploadfile['filename'],
  618.                 'name'=> $uploadfile['filenameOriginal']    ,
  619.                 'firstImage' =>  $getTabNbrPapier['firstImage']
  620.             );
  621.             $result $this->liseuse_service->saveDocClientByData($tab,$user);
  622.             $content $uploadfile['filename'];
  623.         }else{
  624.             $content false;
  625.         }
  626.         $response = new Response();
  627.         $response->setStatusCode(200);
  628.         $response->setContent($content);
  629.         return $response;
  630.     }
  631.     /**
  632.      * @Route("/get-img-reluire/{tokenCartDetail}", name="get_img_reluire",options={"expose"=true})
  633.      */
  634.     public function getImgReluire(Request $request,$tokenCartDetail)
  635.     {
  636.         $cartDetail $this->em->getRepository(CartDetail::class)->findOneBy(array('token'=>$tokenCartDetail));
  637.         if($cartDetail){
  638.             $accReluireObject $this->em->getRepository(CartDetailAccessoire::class)->getAccessoire(Accessoire::RELUIRE$cartDetail->getId());
  639.             if($accReluireObject) {
  640.                 return $this->render('front/liseuse-papier/image-reluire.html.twig', array('imageReluire' => $accReluireObject->getAccessoire()->getImageReluire()));
  641.             }
  642.         }
  643.         $response = new Response();
  644.         $response->setContent(0);
  645.         return $response;
  646.     }
  647.     /**
  648.      * @Route("/text-reluire-min-max/{idReluire}", name="text_reluire_min_max",options={"expose"=true})
  649.      */
  650.     public function getTextReluireCheck(Request $request,$idReluire)
  651.     {
  652.         $reluire $this->em->getRepository(Accessoire::class)->find($idReluire);
  653.         if($reluire){
  654.             return $this->render('front/liseuse-papier/text-min-max-reluire-modal.html.twig', array('reluire' => $reluire));
  655.         }
  656.         $response = new Response();
  657.         $response->setContent(0);
  658.         return $response;
  659.     }
  660.     /**
  661.      * @Route("array-min-max-reluire/{tokenCartDetail}/{nbr}", name="array_min_max_reluire",options={"expose"=true})
  662.      */
  663.     public function getArrayMinMaxReluire(Request $request,$tokenCartDetail,$nbr)
  664.     {
  665.         $cartDetail $this->em->getRepository(CartDetail::class)->findOneBy(array('token'=>$tokenCartDetail));
  666.         if($cartDetail){
  667.             $array $this->product_service->getArrayMinMaxReluireGrammage($cartDetail->getQty(),$nbr);
  668.             $response = new Response();
  669.             $response->setContent(json_encode($array,JSON_FORCE_OBJECT));
  670.             return $response;
  671.         }
  672.         $response = new Response();
  673.         $response->setContent(0);
  674.         return $response;
  675.     }
  676.     /**
  677.      * @Route("/check-is-login", name="check_is_login",options={"expose"=true})
  678.      */
  679.     public function checkIsLogin(Request $request) : Response
  680.     {
  681.         $response = new Response();
  682.         if($this->getUser()){
  683.             $response->setContent(1);
  684.             return $response;
  685.         }
  686.         $response->setContent(0);
  687.         return $response;
  688.     }
  689. }
  690.