src/Controller/Front/NbDesignerController.php line 336

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\Services\CartService;
  10. use App\Services\NbDesigner;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  16. use Twig\Environment;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  20. use App\Services\Users;
  21. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  22. class NbDesignerController extends AbstractController
  23. {
  24.     private $twig;
  25.     private $router;
  26.     private $users_service;
  27.     private $nbDesigner;
  28.     private $params;
  29.     private $cart_service;
  30.     public function __construct(Environment $twigUrlGeneratorInterface $routerParameterBagInterface $paramsUsers $users_serviceNbDesigner $nbDesigner,CartService $cart_service)
  31.     {
  32.         $this->twig $twig;
  33.         $this->router $router;
  34.         $this->users_service $users_service;
  35.         $this->nbDesigner $nbDesigner;
  36.         $this->params $params;
  37.         $this->cart_service $cart_service;
  38.     }
  39.     /**
  40.      * @Route("/nb-designer/create/{token}", name="nb_designer",options={"expose"=true})
  41.      */
  42.     public function index(Request $request,$token null) : Response
  43.     {
  44.         $data $this->nbDesigner->init($request,$token);
  45.         $response $this->twig->render('nb_designer/index.html.twig'$data);
  46.         $response = new Response($response);
  47.         $response->headers->set('Access-Control-Allow-Origin''*');
  48.         return $response;
  49.     }
  50.     /**
  51.      * @Route("/nb-designer/get-template-ajax", name="nb_designer_tempalte_ajax",options={"expose"=true})
  52.      */
  53.     public function getTemplate(Request $request) : Response
  54.     {
  55.         $data $this->nbDesigner->getTemplateAjax($request);
  56.         $response $this->twig->render('nb_designer/template.html.twig'$data);
  57.         $response = new Response($response);
  58.         return $response;
  59.     }
  60.     /**
  61.      * @Route("/nb-designer/get-template-quantity", name="nb_designer_tempalte_quantity_ajax",options={"expose"=true})
  62.      */
  63.     public function getQty(Request $request) : Response
  64.     {
  65.         $data $this->nbDesigner->getQtyFlyerCarte($request);
  66.         $response $this->twig->render('nb_designer/getPriceByQty.html.twig'$data);
  67.         $response = new Response($response);
  68.         return $response;
  69.     }
  70.     /**
  71.      * @Route("/nb-designer/get-template-grammage", name="nb_designer_tempalte_gramage_ajax",options={"expose"=true})
  72.      */
  73.     public function getGramageByTypeImpression(Request $request) : Response
  74.     {
  75.         $data $this->nbDesigner->getGrammageAffichage($request);
  76.         $response $this->twig->render('nb_designer/getGramageInput.html.twig'$data);
  77.         $response = new Response($response);
  78.         return $response;
  79.     }
  80.     /**
  81.      * @Route("/nb-designer/import-textes", name="nb_designer_import_textes")
  82.      */
  83.     public function importTextes() : Response
  84.     {
  85.         $this->nbDesigner->importTextes();
  86.         return new Response('DONE');
  87.     }
  88.     /**
  89.      * @Route("/nb-designer/import-elements", name="nb_designer_import_elements")
  90.      */
  91.     public function importElements() : Response
  92.     {
  93.         $this->nbDesigner->importElements();
  94.         return new Response('DONE');
  95.     }
  96.     /**
  97.      * @Route("/nb-designer/import-templates", name="nb_designer_import_templates")
  98.      */
  99.     public function importTemplates(Request $request) : Response
  100.     {
  101.         $this->nbDesigner->importTemplates($request,'cv_carre'); // carte visite carre
  102.         $this->nbDesigner->importTemplates($request,'cv_classique'); // carte visite classique
  103.         $this->nbDesigner->importTemplates($request,'flyer_a5'); // flyer a5
  104.         $this->nbDesigner->importTemplates($request,'flyer_a6'); // flyer a6
  105.         return new Response('DONE');
  106.     }
  107.     /**
  108.      * @Route("/nb-designer/import-templates-image", name="nb_designer_import_templates_image")
  109.      */
  110.     public function importTemplatesImage(Request $request) : Response
  111.     {
  112.         $this->nbDesigner->importDossierImage();
  113.         return new Response('DONE');
  114.     }
  115.     /**
  116.      * @Route("/nb-designer/import-dossier-template-custom", name="nb_designer_import_dossier_templates_custom")
  117.      */
  118.     public function importDossierTemplatesa(Request $request) : Response
  119.     {
  120.         $this->nbDesigner->importTemplatesCustome($request,'flyer_a5','37729301579182017');
  121.         return new Response('DONE');
  122.     }
  123.     /**
  124.      * @Route("/nb-designer/import-dossier-template", name="nb_designer_import_dossier_templates")
  125.      */
  126.     public function importDossierTemplates(Request $request) : Response
  127.     {
  128.         $this->nbDesigner->getListDirectoriesToImport();
  129.         return new Response('DONE');
  130.     }
  131.     /**
  132.      * @Route("/nb-designer/import-dossier-template-nbd", name="nb_designer_import_dossier_templates_nbd")
  133.      */
  134.     public function importDossierTemplatesNBD(Request $request) : Response
  135.     {
  136.         if($request->getMethod() == 'POST'){
  137.             $json $request->request->get('jsonTemplate');
  138.             $typeTemplate $request->request->get('typeTemplate');
  139.             $scale $request->request->get('scale');
  140.             $isCopees rand(10000000,99999999);
  141.             $this->nbDesigner->importDossierByNBD($request,$typeTemplate,$json,$isCopees,$scale);
  142.             return new Response('DONE');
  143.         }
  144.         $response $this->twig->render('nb_designer/importTemplate.html.twig');
  145.         $response = new Response($response);
  146.         return $response;
  147.     }
  148.     /**
  149.      * @Route("/nb-designer/import-text-previews", name="nb_designer_import_text_previews")
  150.      */
  151.     public function importTextPreviews(Request $request) : Response
  152.     {
  153.         $this->nbDesigner->importTextesPreviews();
  154.         return new Response('DONE');
  155.     }
  156.     /**
  157.      * @Route("/nb-designer/update-size-template", name="nb_designer_update_size_template")
  158.      */
  159.     public function updateSizeTemplate(Request $request) : Response
  160.     {
  161.         $this->nbDesigner->updateScale();
  162.         return new Response('DONE');
  163.     }
  164.     /**
  165.      * @Route("/nb-designer/load-user-template", name="nb_designer_load_user_template",options={"expose"=true})
  166.      */
  167.     public function loadUserTemplate(Request $request) : Response
  168.     {
  169.         $data $this->nbDesigner->loadUserTemplate($request);
  170.         return new JsonResponse($data);
  171.     }
  172.     /**
  173.      * @Route("/nb-designer/update-user-template", name="nb_designer_update_user_template",options={"expose"=true})
  174.      */
  175.     public function updateUserTemplate(Request $request) : Response
  176.     {
  177.         $data $this->nbDesigner->updateUserTemplate($request);
  178.         return new JsonResponse($data);
  179.     }
  180.     /**
  181.      * @Route("/nb-designer/update-elements-user-template", name="nb_designer_update_elements_user_template",options={"expose"=true})
  182.      */
  183.     public function updateElementsUserTemplate(Request $request) : Response
  184.     {
  185.         $data $this->nbDesigner->updateElementsUserTemplate($request);
  186.         return new JsonResponse($data);
  187.     }
  188.     /**
  189.      * @Route("/nb-designer/load-user-template-layers", name="nb_designer_load_user_template_layers",options={"expose"=true})
  190.      */
  191.     public function loadUserTemplateLayers(Request $request) : Response
  192.     {
  193.         $data $this->nbDesigner->loadUserTemplateLayers($request);
  194.         $content $this->twig->render('nb_designer/getLayers.html.twig'$data);
  195.         $response = new Response($content);
  196.         return $response;
  197.     }
  198.     /**
  199.      * @Route("/nb-designer/update-selectable-user-template-layers", name="nb_designer_update_selectable_user_template_layers",options={"expose"=true})
  200.      */
  201.     public function updateSelectableUserTemplateLayers(Request $request) : Response
  202.     {
  203.         $this->nbDesigner->updateSelectableUserTemplateLayers($request);
  204.         return new Response('DONE');
  205.     }
  206.     /**
  207.      * @Route("/nb-designer/update-user-template-options", name="nb_designer_update_user_template_options",options={"expose"=true})
  208.      */
  209.     public function updateUserTemplateOptions(Request $request) : Response
  210.     {
  211.         $this->nbDesigner->updateUserTemplateOptions($request);
  212.         return new Response('DONE');
  213.     }
  214.     /**
  215.      * @Route("/nb-designer/download-pdf", name="nb_designer_download_pdf",options={"expose"=true})
  216.      */
  217.     public function downloadPdf(Request $request) : Response
  218.     {
  219.         $pdf $this->nbDesigner->generatePdf($request);
  220.         // Generate response
  221.         $response = new Response($pdf);
  222.         $baseurl $request->getScheme() . '://' $request->getHttpHost() . $request->getBasePath();
  223.         $path_pdf $this->params->get('uploads_directory').'/tmp/'.$pdf;
  224.         $url $baseurl.'/uploads/tmp/'.$pdf;
  225.         // Set headers
  226.         $response->headers->set('Cache-Control''private');
  227.         $response->headers->set('Content-type'mime_content_type($path_pdf));
  228.         $response->headers->set('Content-Disposition''attachment; filename="' basename($path_pdf) . '";');
  229.         $response->headers->set('Content-length'filesize($path_pdf));
  230.         // Send headers before outputting anything
  231.         $response->sendHeaders();
  232.         $response->setContent(file_get_contents($url));
  233.         return $response;
  234.     }
  235.     /**
  236.      * @Route("/nb-designer/download-pdf-and-get-first-image", name="nb_designer_download_pdf_and_get_first_image",options={"expose"=true})
  237.      */
  238.     public function downloadPdfAndGetFirstImage(Request $request) : Response
  239.     {
  240.         $pdf $this->nbDesigner->generatePdf($request);
  241.         $images $this->nbDesigner->getImageRectoVerso($request);
  242.         $response = new Response($pdf);
  243.         $response->setContent(json_encode($images));
  244.         return $response;
  245.     }
  246.     /**
  247.      * @Route("/nb-designer/save-crea", name="nb_designer_save_crea",options={"expose"=true})
  248.      */
  249.     public function saveCrea(Request $request) : Response
  250.     {
  251.         $data $this->nbDesigner->generateZip($request);
  252.         $response = new Response();
  253.         $response->setContent($data);
  254.         return $response;
  255.     }
  256.     /**
  257.      * @Route("/nb-designer/save-template-abonnement", name="nb_designer_save_template_abonnement",options={"expose"=true})
  258.      */
  259.     public function saveTemplateAbonnement(Request $request) : Response
  260.     {
  261.         $data $this->nbDesigner->saveTemplateAbonnement($request,$this->getUser());
  262.         if($data != 0){
  263.             $response $this->twig->render('nb_designer/getMyDesign.html.twig'$data);
  264.             $response = new Response($response);
  265.             return $response;
  266.         }else{
  267.             $response = new Response();
  268.             $response->setContent(1);
  269.             return $response;
  270.         }
  271.     }
  272.     /**
  273.      * @Route("/nb-designer/save-template-user", name="nb_designer_save_template_user",options={"expose"=true})
  274.      */
  275.     public function saveTemplateUser(Request $request) : Response
  276.     {
  277.         $cart $this->cart_service->createCart(true);
  278.         $price $this->nbDesigner->updateUserTemplateGetPrice($request,$cart,$this->getUser());
  279.         $templates $this->nbDesigner->saveDesignImg($request,$this->getUser(),$cart);
  280.         if($templates != 0){
  281.             $response $this->twig->render('nb_designer/getMyDesign.html.twig'$templates);
  282.             $response = new Response($response);
  283.             return $response;
  284.         }else{
  285.             $response = new Response();
  286.             $response->setContent(1);
  287.             return $response;
  288.         }
  289.     }
  290.     /**
  291.      * @Route("/nb-designer/get-css-file", name="nb_designer_get_css_file",options={"expose"=true})
  292.      */
  293.     public function getCssFile(Request $request) : Response
  294.     {
  295.         $fonts $this->nbDesigner->getCssFonts($request);
  296.         $content $this->twig->render('nb_designer/css.html.twig', ['fonts' => $fonts]);
  297.         $response = new Response($content);
  298.         $response->headers->set('Content-Type''text/css');
  299.         return $response;
  300.     }
  301.     /**
  302.      * @Route("/nb-designer/add-to-cart", name="nb_designer_add_to_cart")
  303.      */
  304.     public function addToCart(Request $request) : Response
  305.     {
  306.         $this->nbDesigner->addToCart($request,$this->getUser());
  307.         return $this->redirectToRoute('checkout');
  308.     }
  309.     /**
  310.      * @Route("/nb-designer/add-to-cart-distribution-flayer", name="nb_designer_add_to_cart_distribution_flyer")
  311.      */
  312.     public function addToCartDistributionFlyer(Request $request) : Response
  313.     {
  314.         $this->nbDesigner->addToCart($request,$this->getUser());
  315.         return $this->redirectToRoute('distribution_calcule');
  316.     }
  317.     /**
  318.      * @Route("/nb-designer/get-price", name="nb_designer_get_price",options={"expose"=true})
  319.      */
  320.     public function getPrice(Request $request) : Response
  321.     {
  322.         $cart $this->cart_service->createCart(true);
  323.         $price $this->nbDesigner->updateUserTemplateGetPrice($request,$cart,$this->getUser());
  324.         $content $this->twig->render('nb_designer/getPrice.html.twig'$price);
  325.         $response = new Response($content);
  326.         return $response;
  327.     }
  328.     /**
  329.      * @Route("/nb-designer/add-to-cart-redirect-to-acueil", name="nb_designer_add_to_cart_redirect_to_acueil")
  330.      */
  331.     public function addToCartRedirectToAcueil(Request $request) : Response
  332.     {
  333.         $arrayRedirect $this->nbDesigner->addToCart($request,$this->getUser());
  334.         return $this->redirectToRoute('accueil',$arrayRedirect);
  335.     }
  336.     /**
  337.      * @Route("/nb-designer/get-template-search", name="nb_designer_get_template_search_ajax",options={"expose"=true})
  338.      */
  339.     public function getTemplateFromTags(Request $request) : Response
  340.     {
  341.         $data $this->nbDesigner->getTemplateAjax($request);
  342.         $data['tags'] = $request->get('searchTag');
  343.         $response $this->twig->render('nb_designer/template.html.twig'$data);
  344.         $response = new Response($response);
  345.         return $response;
  346.     }
  347. }