src/Controller/Website/KategoriesController.php line 303

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Website;
  4. use DateTime;
  5. use Knp\Snappy\Pdf;
  6. use App\Entity\Agent;
  7. use Twig\Environment;
  8. use App\Form\AgentType;
  9. use App\Entity\Kategorie;
  10. use App\Entity\PolicyOffer;
  11. use App\Entity\PolicyClosed;
  12. use Doctrine\ORM\Mapping\Id;
  13. use setasign\Fpdi\Tfpdf\Fpdi;
  14. use App\Form\PolicyClosedType;
  15. use App\Service\SignalService;
  16. use App\Repository\DiodaRepository;
  17. use App\Service\BankAccountService;
  18. use App\Entity\PolicyClosedVariants;
  19. use App\Repository\ProduktRepository;
  20. use App\Repository\SettingsRepository;
  21. use App\Repository\KategorieRepository;
  22. use App\Repository\PolicyTypeRepository;
  23. use Doctrine\ORM\EntityManagerInterface;
  24. use App\Repository\ClausesDictRepository;
  25. use App\Repository\ModelOprawyRepository;
  26. use App\Repository\PolicyOfferRepository;
  27. use Sulu\Bundle\MediaBundle\Entity\Media;
  28. use App\Repository\PolicyClosedRepository;
  29. use Knp\Component\Pager\PaginatorInterface;
  30. use App\Repository\ClosedPoliciesRepository;
  31. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  32. use Symfony\Component\HttpFoundation\Request;
  33. use Symfony\Component\Mailer\MailerInterface;
  34. use App\Repository\ClausesOtherDictRepository;
  35. use App\Repository\EducationalUnitsRepository;
  36. use Symfony\Component\HttpFoundation\Response;
  37. use Symfony\Component\Routing\Annotation\Route;
  38. use App\Repository\PolicyClosedStatusRepository;
  39. //use setasign\Fpdi\Fpdi;
  40. use Symfony\Component\HttpFoundation\HeaderUtils;
  41. use Symfony\Component\HttpFoundation\JsonResponse;
  42. use Symfony\Component\Mime\Address as MimeAddress;
  43. use Sulu\Bundle\HttpCacheBundle\Cache\SuluHttpCache;
  44. use Symfony\Component\HttpFoundation\StreamedResponse;
  45. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  46. use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
  47. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  48. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  49. use Hackzilla\PasswordGenerator\Generator\ComputerPasswordGenerator;
  50. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  51. use Sulu\Bundle\WebsiteBundle\Resolver\TemplateAttributeResolverInterface;
  52. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  53. use Scheb\TwoFactorBundle\Security\TwoFactor\Provider\Google\GoogleAuthenticatorInterface;
  54. /**
  55.  * @Route("/kategories")
  56.  */
  57. class KategoriesController extends AbstractController
  58. {
  59.     private EntityManagerInterface $entityManager;
  60.     public function __construct(EntityManagerInterface $entityManager)
  61.     {
  62.         $this->entityManager $entityManager;
  63.     }
  64.     /**
  65.      * @Route("/{kategoria}", name="kategories")
  66.      * @Route("/", name="kategories_all", defaults={"kategoria"=0})
  67.      */
  68.     public function index(
  69.         int $kategoria,
  70.         AuthenticationUtils $authenticationUtils,
  71.         TemplateAttributeResolverInterface $resolver,
  72.         Environment $twig,
  73.         KategorieRepository $kategorieRepository,
  74.         ProduktRepository $produktRepository,
  75.         ModelOprawyRepository $modeleOprawyRepository,
  76.     ): Response {
  77.         $kategories $kategorieRepository->findAll();
  78.         $oprawa =  $modeleOprawyRepository->findBy(['kategoria' => $kategories]);
  79.         $response = new Response($twig->render(
  80.             'kategories/index.html.twig',
  81.             $resolver->resolve([
  82.                 'kategories' => $kategories,
  83.                 'modelOprawy' =>$oprawa,
  84.             ])
  85.         ));
  86.         $response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL'604800'); // 604800 seconds = 1 week
  87.         // Uncached response private response (for controller containing user specific data):
  88.         $response->setPrivate();
  89.         $response->setMaxAge(0);
  90.         $response->setSharedMaxAge(0);
  91.         $response->headers->addCacheControlDirective('no-cache'true);
  92.         $response->headers->addCacheControlDirective('must-revalidate'true);
  93.         $response->headers->addCacheControlDirective('no-store'true);
  94.         return $response;
  95.     }
  96.     /**
  97.      * @Route("/{id}/produkty", name="produkty_w_kategorii")
  98.      */
  99.     public function kategoriesProdukt(
  100.         $id,
  101.         TemplateAttributeResolverInterface $resolver,
  102.         Environment $twig,
  103.         KategorieRepository $kategorieRepository,
  104.         ProduktRepository $produktRepository,
  105.         ModelOprawyRepository $modeleOprawyRepository
  106.     ): Response {
  107.         $selectedKategoria $kategorieRepository->find($id);
  108.         //dd($selectedKategoria);
  109.         //$modeleOprawy = $modeleOprawyRepository->findBy([],['nazwa'=>'asc']);
  110.          if ($selectedKategoria) {
  111.             $modeleOprawy $modeleOprawyRepository->findBy(['kategoria' => $selectedKategoria]);
  112.            // $produkts = $produktRepository->findBy(['modelOprawy'] => )
  113.          }
  114.         $response = new Response($twig->render(
  115.             'kategories/kategories-product.html.twig',
  116.             $resolver->resolve([
  117.                 'kategoria' => $selectedKategoria,
  118.                 'modeleOpraw' => $modeleOprawy,
  119.                 //'produkty' => $produkts,
  120.             ])
  121.         ));
  122.         $response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL'604800'); // 604800 seconds = 1 week
  123.         // Uncached response private response (for controller containing user specific data):
  124.         $response->setPrivate();
  125.         $response->setMaxAge(0);
  126.         $response->setSharedMaxAge(0);
  127.         $response->headers->addCacheControlDirective('no-cache'true);
  128.         $response->headers->addCacheControlDirective('must-revalidate'true);
  129.         $response->headers->addCacheControlDirective('no-store'true);
  130.         return $response;
  131.     }
  132.     /**
  133.      * @Route("/{id}/produkty/{slug}", name="produkt")
  134.      */
  135.     public function showProduct(
  136.         string $slug,
  137.         TemplateAttributeResolverInterface $resolver,
  138.         Environment $twig,
  139.         KategorieRepository $kategorieRepository,
  140.         ProduktRepository $produktRepository,
  141.         DiodaRepository $diodaRepository,
  142.     ): Response {
  143.         $product $produktRepository->findOneBySlug('/' $slug);
  144.         //dd($product);
  145.         
  146.         $response = new Response($twig->render(
  147.             'kategories/product.html.twig',
  148.             $resolver->resolve([
  149.                 //'kategoria' => $selectedKategoria,
  150.                 'produkt' => $product,
  151.             ])
  152.         ));
  153.         $response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL'604800'); // 604800 seconds = 1 week
  154.         // Uncached response private response (for controller containing user specific data):
  155.         $response->setPrivate();
  156.         $response->setMaxAge(0);
  157.         $response->setSharedMaxAge(0);
  158.         $response->headers->addCacheControlDirective('no-cache'true);
  159.         $response->headers->addCacheControlDirective('must-revalidate'true);
  160.         $response->headers->addCacheControlDirective('no-store'true);
  161.         return $response;
  162.     }
  163.      /**
  164.      * @Route("/{id}/produkty/{slug}/pdf", name="pdf")
  165.      */
  166.     public function showPdf(
  167.         string $slug,
  168.         TemplateAttributeResolverInterface $resolver,
  169.         Environment $twig,
  170.         KategorieRepository $kategorieRepository,
  171.         ProduktRepository $produktRepository,
  172.         DiodaRepository $diodaRepository,
  173.         Pdf $knpSnappyPdf,
  174.         Request $request
  175.     )
  176.     {
  177.         $product $produktRepository->findOneBySlug('/' $slug);
  178.        //
  179.         //dd($product);
  180.          $date = new DateTime(); 
  181.          $fdate $date->format('d.m.Y');
  182.          $html $this->renderView('kategories/product-pdf.html.twig', array(
  183.             'produkt'  => $product,
  184.             'date' => $fdate
  185.         ));
  186.         //dd($product);
  187.         //$site_url = "{$_SERVER['REQUEST_SCHEME']}://{$_SERVER['HTTP_HOST']}";
  188.         //$html = preg_replace('/(<img.*?src=")(?!http)(.*">)/',"$1$site_url/$2",$html);
  189.         
  190.         //dd($html);
  191.         // $response = new Response($twig->render(
  192.         //     'kategories/product-pdf.html.twig',
  193.         //     $resolver->resolve([
  194.         //         //'kategoria' => $selectedKategoria,
  195.         //         'produkt' => $product,
  196.         //         'date' => $fdate
  197.         //     ])
  198.         // ));
  199.         // return $response;
  200.        
  201.         $result $date->format('Y-m-d H.i');
  202.         $string preg_replace('/[^A-Za-z0-9\- ]/'''$product->getNazwa());
  203.         return new PdfResponse(
  204.             $knpSnappyPdf->getOutputFromHtml($html, [
  205.                 'enable-javascript' => true,
  206.                 'javascript-delay' => 1000,
  207.                 'no-stop-slow-scripts' => true,
  208.                 'no-background' => false,
  209.                 'lowquality' => true,
  210.                 'page-size' => 'A4',
  211.                 'encoding' => 'utf-8',
  212.                 'images' => true,
  213.                 'cookie' => array(),
  214.                 'dpi' => 72,
  215.                 'enable-external-links' => true,
  216.                 'enable-internal-links' => true
  217.             ]), $string.' '.$result.'.pdf'
  218.            
  219.             
  220.         );
  221.     }
  222.     /**
  223.      * @Route("/{id}/produkty/{slug}/pdf_en", name="pdfEN")
  224.      */
  225.     public function showPdfEN(
  226.         string $slug,
  227.         TemplateAttributeResolverInterface $resolver,
  228.         Environment $twig,
  229.         KategorieRepository $kategorieRepository,
  230.         ProduktRepository $produktRepository,
  231.         DiodaRepository $diodaRepository,
  232.         Pdf $knpSnappyPdf,
  233.         Request $request
  234.     )
  235.     {
  236.         $product $produktRepository->findOneBySlug('/' $slug);
  237.        //
  238.         //dd($slug);
  239.        // dd($product);
  240.         $date = new DateTime(); 
  241.         $fdate $date->format('d.m.Y');
  242.         $html $this->renderView('kategories/product-pdf-eng.html.twig', array(
  243.             'produkt'  => $product,
  244.             'date' => $fdate
  245.         ));
  246.         //dd($product);
  247.         //$site_url = "{$_SERVER['REQUEST_SCHEME']}://{$_SERVER['HTTP_HOST']}";
  248.         //$html = preg_replace('/(<img.*?src=")(?!http)(.*">)/',"$1$site_url/$2",$html);
  249.         
  250.         //dd($html);
  251.         // $response = new Response($twig->render(
  252.         //     'kategories/product-pdf.html.twig',
  253.         //     $resolver->resolve([
  254.         //         //'kategoria' => $selectedKategoria,
  255.         //         'produkt' => $product,
  256.         //     ])
  257.         // ));
  258.         // return $response;
  259.        
  260.         $result $date->format('Y-m-d H.i');
  261.         $string preg_replace('/[^A-Za-z0-9\- ]/'''$product->getNazwa());
  262.         return new PdfResponse(
  263.             $knpSnappyPdf->getOutputFromHtml($html, [
  264.                 'enable-javascript' => true,
  265.                 'javascript-delay' => 1000,
  266.                 'no-stop-slow-scripts' => true,
  267.                 'no-background' => false,
  268.                 'lowquality' => true,
  269.                 'page-size' => 'A4',
  270.                 'encoding' => 'utf-8',
  271.                 'images' => true,
  272.                 'cookie' => array(),
  273.                 'dpi' => 72,
  274.                 'enable-external-links' => true,
  275.                 'enable-internal-links' => true
  276.             ]), $string.' '.$result.'.pdf'
  277.            
  278.             
  279.         );
  280.     }
  281.     /**
  282.      * @Route("/{id}/produkty/{slug}/CE", name="CEdeclaration")
  283.      */
  284.     public function showCEdeclaration(
  285.         string $slug,
  286.         TemplateAttributeResolverInterface $resolver,
  287.         Environment $twig,
  288.         KategorieRepository $kategorieRepository,
  289.         ProduktRepository $produktRepository,
  290.         DiodaRepository $diodaRepository,
  291.         Pdf $knpSnappyPdf,
  292.         Request $request
  293.     )
  294.     {
  295.         $product $produktRepository->findOneBySlug('/' $slug);
  296.        //
  297.         //dd($product);
  298.         $date = new DateTime(); 
  299.         $fdate $date->format('d.m.Y');
  300.         $html $this->renderView('kategories/product-CE.html.twig', array(
  301.             'produkt'  => $product,
  302.             'date' => $fdate
  303.         ));
  304.        
  305.         $result $date->format('Y-m-d H.i');
  306.         $string preg_replace('/[^A-Za-z0-9\- ]/'''$product->getNazwa());
  307.         
  308.         
  309.         //  $response = new Response($twig->render(
  310.         //     'kategories/product-CE.html.twig',
  311.         //     $resolver->resolve([
  312.         //         //'kategoria' => $selectedKategoria,
  313.         //         'produkt' => $product,
  314.         //         'date' => $fdate
  315.         //     ])
  316.         // ));
  317.         // return $response;
  318.         return new PdfResponse(
  319.             $knpSnappyPdf->getOutputFromHtml($html, [
  320.                 'enable-javascript' => true,
  321.                 'javascript-delay' => 1000,
  322.                 'no-stop-slow-scripts' => true,
  323.                 'no-background' => false,
  324.                 'lowquality' => true,
  325.                 'page-size' => 'A4',
  326.                 'encoding' => 'utf-8',
  327.                 'images' => true,
  328.                 'cookie' => array(),
  329.                 'dpi' => 72,
  330.                 'enable-external-links' => true,
  331.                 'enable-internal-links' => true
  332.             ]), $string.' '.$result.'CE'.'.pdf'
  333.            
  334.             
  335.         );
  336.     }
  337.      /**
  338.      * @Route("/{id}/produkty/{slug}/plikFoto", name="plikFoto")
  339.      */
  340.     public function getFotoFile (
  341.         string $slug,
  342.         ProduktRepository $produktRepository,
  343.     ) : Response
  344.     {
  345.         $product $produktRepository->findOneBySlug('/' $slug);
  346.         $file $product->getPlikFotometryczny();
  347.         $request Request::createFromGlobals();
  348.         $serverUrl 'https://cora.pl/';
  349.         //$serverUrl = $request->server->get('SYMFONY_PROJECT_DEFAULT_ROUTE_URL');
  350.         $file str_replace('#''%23'$file);
  351.         $file trim($file);
  352.         $fileUrl $serverUrl $file;
  353.         $fileContents file_get_contents($fileUrl);
  354.         $fileName $product->getKod() .'.ldt';
  355.         $response = new Response($fileContents);
  356.         $disposition HeaderUtils::makeDisposition(
  357.             HeaderUtils::DISPOSITION_ATTACHMENT,
  358.             $fileName
  359.         );
  360.         $response->headers->set('Content-Disposition'$disposition);
  361.         $response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL'604800'); // 604800 seconds = 1 week
  362.         // Uncached response private response (for controller containing user specific data):
  363.         $response->setPrivate();
  364.         $response->setMaxAge(0);
  365.         $response->setSharedMaxAge(0);
  366.         $response->headers->addCacheControlDirective('no-cache'true);
  367.         $response->headers->addCacheControlDirective('must-revalidate'true);
  368.         $response->headers->addCacheControlDirective('no-store'true);
  369.         return $response;
  370.     }
  371.        /**
  372.      * @Route("/{id}/produkty/{slug}/UKCA", name="UKCAdeclaration")
  373.      */
  374.     public function showUKCAdeclaration(
  375.         string $slug,
  376.         TemplateAttributeResolverInterface $resolver,
  377.         Environment $twig,
  378.         KategorieRepository $kategorieRepository,
  379.         ProduktRepository $produktRepository,
  380.         DiodaRepository $diodaRepository,
  381.         Pdf $knpSnappyPdf,
  382.         Request $request
  383.     )
  384.     {
  385.         $product $produktRepository->findOneBySlug('/' $slug);
  386.        //
  387.         //dd($product);
  388.         $date = new DateTime(); 
  389.         $fdate $date->format('d.m.Y');
  390.         $html $this->renderView('kategories/product-UKCA.html.twig', array(
  391.             'produkt'  => $product,
  392.             'date' => $fdate
  393.         ));
  394.        
  395.         $result $date->format('Y-m-d H.i');
  396.         $string preg_replace('/[^A-Za-z0-9\- ]/'''$product->getNazwa());
  397.         
  398.         
  399.         //  $response = new Response($twig->render(
  400.         //     'kategories/product-CE.html.twig',
  401.         //     $resolver->resolve([
  402.         //         //'kategoria' => $selectedKategoria,
  403.         //         'produkt' => $product,
  404.         //         'date' => $fdate
  405.         //     ])
  406.         // ));
  407.         // return $response;
  408.         return new PdfResponse(
  409.             $knpSnappyPdf->getOutputFromHtml($html, [
  410.                 'enable-javascript' => true,
  411.                 'javascript-delay' => 1000,
  412.                 'no-stop-slow-scripts' => true,
  413.                 'no-background' => false,
  414.                 'lowquality' => true,
  415.                 'page-size' => 'A4',
  416.                 'encoding' => 'utf-8',
  417.                 'images' => true,
  418.                 'cookie' => array(),
  419.                 'dpi' => 72,
  420.                 'enable-external-links' => true,
  421.                 'enable-internal-links' => true
  422.             ]), $string.' '.$result.'CE'.'.pdf'
  423.            
  424.             
  425.         );
  426.     }
  427. }