src/Controller/DefaultController.php line 63

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AboutPage;
  4. use App\Entity\BigWorkPage;
  5. use App\Entity\BigWorks;
  6. use App\Entity\Configuration;
  7. use App\Entity\Contact;
  8. use App\Entity\ContactQueryType;
  9. use App\Entity\GeneralCategory;
  10. use App\Entity\HomePage;
  11. use App\Entity\HomeSlider;
  12. use App\Entity\ManualsAndCatalogs;
  13. use App\Entity\ManualsAndCatalogsPage;
  14. use App\Entity\News;
  15. use App\Entity\NewsPage;
  16. use App\Entity\Product;
  17. use App\Entity\ProductCategory;
  18. use App\Entity\ProductColor;
  19. use App\Entity\ProductFilter;
  20. use App\Entity\ProductsPage;
  21. use App\Entity\Regiones;
  22. use App\Entity\UsPage;
  23. use App\Repository\AboutPageRepository;
  24. use App\Repository\BigWorkPageRepository;
  25. use App\Repository\BigWorksRepository;
  26. use App\Repository\ComunasRepository;
  27. use App\Repository\ConfigurationRepository;
  28. use App\Repository\ContactQueryTypeRepository;
  29. use App\Repository\GeneralCategoryRepository;
  30. use App\Repository\HomePageRepository;
  31. use App\Repository\ManualsAndCatalogsPageRepository;
  32. use App\Repository\ManualsAndCatalogsRepository;
  33. use App\Repository\NewsPageRepository;
  34. use App\Repository\NewsRepository;
  35. use App\Repository\ProductCategoryRepository;
  36. use App\Repository\ProductRepository;
  37. use App\Repository\ProductsPageRepository;
  38. use App\Repository\RegionRepository;
  39. use App\Repository\SearchPageRepository;
  40. use App\Repository\UsPageRepository;
  41. use App\Twig\Extension\MediaExtension;
  42. use App\Utils\SeoUtils;
  43. use Doctrine\ORM\EntityManagerInterface;
  44. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  45. use Symfony\Component\HttpFoundation\Request;
  46. use Symfony\Component\HttpFoundation\Response;
  47. use Symfony\Component\Mailer\MailerInterface;
  48. use Symfony\Component\Routing\Annotation\Route;
  49. use Symfony\Component\Validator\Validator\ValidatorInterface;
  50. use Symfony\Component\Mime\Email;
  51. class DefaultController extends AbstractController
  52. {
  53.     public function __construct(private readonly SeoUtils $seoUtils)
  54.     {
  55.     }
  56.     /**
  57.      * @Route("/{reactRouting}", name="homepage", requirements={"reactRouting"=".+"}, defaults={"reactRouting": null}, priority=-10)
  58.      */
  59.     public function indexAction(): Response
  60.     {
  61.         return $this->render('default/index.html.twig');
  62.     }
  63.     /**
  64.      * @Route("/data/homeData.json", name="data_home")
  65.      */
  66.     public function dataHomeAction(HomePageRepository $homePageMediaExtension $media): Response
  67.     {
  68.         /** @var HomePage $page */
  69.         $page $homePage->findOneBy([]);
  70.         $data[] = [
  71.             "id"                    => $page->getId(),
  72.             "aboutTxt"              => $page->getAboutUsDescription(),
  73.             "aboutImg"              => $media->media($page->getAboutUsImage()),
  74.             "linkWsp"               => $page->getWspUrl(),
  75.             "bannerWspDesk"         => $media->media($page->getWspImage()),
  76.             "bannerWspMobile"       => $media->media($page->getWspImageMobile()),
  77.             'linkCommunity'         => $page->getCommunityLink(),
  78.             'bannerCommunity'       => $media->media($page->getCommunityBanner()),
  79.             'bannerCommunityMobile' => $media->media($page->getCommunityBannerMobile()),
  80.             "bigWorksDesk"          => $media->media($page->getBigWorkImage()),
  81.             "bigWorksMobile"        => $media->media($page->getBigWorkImageMobile()),
  82.             "ceapDesk"              => $media->media($page->getCeapImage()),
  83.             "ceapMobile"            => $media->media($page->getCeapImageMobile()),
  84.             "seoTitle"              => $page->getSeo()->getTitle(),
  85.             "seoDescription"        => $page->getSeo()->getDescription(),
  86.             "seoKeyword"            => $page->getSeo()->getKeywords(),
  87.             "videoUrl"              => $page->getVideo() ? $media->getMediaUrl($page->getVideo()) : '',
  88.             "videoPoster"           => $media->media($page->getVideoImage()),
  89.         ];
  90.         return $this->json($data);
  91.     }
  92.     /**
  93.      * @Route("/data/About.json", name="data_about")
  94.      */
  95.     public function dataAboutAction(AboutPageRepository $pageRepositoryMediaExtension $media): Response
  96.     {
  97.         /** @var AboutPage $page */
  98.         $page $pageRepository->findOneBy([]);
  99.         $data[] = [
  100.             'seo'     => [
  101.                 'title'       => $page->getSeo()->getTitle(),
  102.                 'description' => $page->getSeo()->getDescription(),
  103.                 'keywords'    => $page->getSeo()->getKeywords(),
  104.             ],
  105.             'banner'  => [
  106.                 'imgDesktop' => $media->media($page->getBannerDesk()),
  107.                 'imgMobile'  => $media->media($page->getBannerMobile()),
  108.             ],
  109.             'hero'    => [
  110.                 'image' => $media->media($page->getHeroImage()),
  111.                 'text'  => $page->getHeroText(),
  112.             ],
  113.             'bloque1' => [
  114.                 'image' => $media->media($page->getBlock1Image()),
  115.                 'text'  => $page->getBlock1(),
  116.             ],
  117.             'bloque2' => [
  118.                 'image' => $media->media($page->getBlock2Image()),
  119.                 'text'  => $page->getBlock2(),
  120.             ],
  121.             'bloque3' => [
  122.                 'image' => $media->media($page->getBlock3Image()),
  123.                 'text'  => $page->getBlock3(),
  124.             ],
  125.         ];
  126.         return $this->json($data);
  127.     }
  128.     /**
  129.      * @Route("/data/homeSlide.json", name="data_home_slider")
  130.      */
  131.     public function dataHomeSliderAction(HomePageRepository $homePageMediaExtension $media): Response
  132.     {
  133.         /** @var HomePage $page */
  134.         $page $homePage->findOneBy([]);
  135.         $data = [];
  136.         /** @var HomeSlider[] $slider */
  137.         foreach ($page->getSliders() as $slider) {
  138.             if ($slider->isIsPublic()) {
  139.                 $data[] = [
  140.                     "id"           => $slider->getId(),
  141.                     "bannerDesckt" => $media->media($slider->getImage()),
  142.                     "bannerMobile" => $media->media($slider->getImageMobile()),
  143.                     "name"         => $slider->getName(),
  144.                     "url"          => $slider->getUrl(),
  145.                 ];
  146.             }
  147.         }
  148.         return $this->json($data);
  149.     }
  150.     /**
  151.      * @Route("/data/news.json", name="data_news")
  152.      */
  153.     public function dataNewsAction(NewsRepository $newsRepositoryMediaExtension $media): Response
  154.     {
  155.         $news $newsRepository->findBy(['public' => true]);
  156.         $data = [];
  157.         /** @var News[] $news */
  158.         foreach ($news as $item) {
  159.             $data[] = [
  160.                 "id"             => $item->getid(),
  161.                 "path"           => $item->getSlug(),
  162.                 "time"           => $item->getPublicDate()->format('F Y'),
  163.                 "title"          => $item->getName(),
  164.                 "description"    => $item->getDescription(),
  165.                 "news"           => $item->getBody(),
  166.                 "img"            => $media->media($item->getImage()),
  167.                 "img_cover"      => $media->media($item->getImageCover()),
  168.                 "seoTitle"       => $item->getSeo()->getTitle(),
  169.                 "seoDescription" => $item->getSeo()->getDescription(),
  170.                 "seoKeyword"     => $item->getSeo()->getKeywords()
  171.             ];
  172.         }
  173.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  174.     }
  175.     /**
  176.      * @Route("/data/category.json", name="data_category")
  177.      */
  178.     public function dataCategoryAction(ProductCategoryRepository $categoryRepositoryMediaExtension $media): Response
  179.     {
  180.         $categories $categoryRepository->findBy([], ['position' => 'ASC']);
  181.         $data       = [];
  182.         /** @var ProductCategory[] $categories */
  183.         foreach ($categories as $item) {
  184.             $data[] = [
  185.                 "id"             => $item->getId(),
  186.                 'public'         => $item->isPublic(),
  187.                 "lineId"         => $item->getGeneralCategory()->getId(),
  188.                 "name"           => $item->getName(),
  189.                 "path"           => $item->getSlug(),
  190.                 'image'          => $item->getImage() ? $media->media($item->getImage()) : '',
  191.                 "seoTitle"       => $item->getSeo()->getTitle(),
  192.                 "seoDescription" => $item->getSeo()->getDescription(),
  193.                 "seoKeyword"     => $item->getSeo()->getKeywords()
  194.             ];
  195.         }
  196.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  197.     }
  198.     /**
  199.      * @Route("/data/product.json", name="data_product")
  200.      */
  201.     public function dataProductAction(ProductRepository $productRepositoryMediaExtension $media): Response
  202.     {
  203.         $products $productRepository->findBy(['public' => true]);
  204.         foreach ($products as $product) {
  205.             $data[$product->getId()] = [
  206.                 "id"             => $product->getId(),
  207.                 "catId"          => array_values(array_map(
  208.                                                      fn(ProductCategory $item) => $item->getId(),
  209.                                                      array_filter(iterator_to_array($product->getCategories()))
  210.                                                  )),
  211.                 "name"           => $product->getName(),
  212.                 "path"           => $product->getSlug(),
  213.                 "space"          => "INTERIOR, EXTERIOR",
  214.                 "productType"    => "BARNIZ, TEXTURAS",
  215.                 "ambienceType"   => "",
  216.                 "surface"        => "",
  217.                 "description"    => $product->getDescription(),
  218.                 "use"            => $product->getUses(),
  219.                 "conditions"     => $product->getConditions(),
  220.                 "tools"          => $product->getTools(),
  221.                 "dilution"       => $product->getDilution(),
  222.                 "layers"         => $product->getLayers(),
  223.                 "dryingTime"     => $product->getDryingTime(),
  224.                 "touchDrying"    => $product->getTouchDrying(),
  225.                 "repaintDrying"  => $product->getRepaintDrying(),
  226.                 "finalDrying"    => $product->getFinalDrying(),
  227.                 "video"          => $product->getVideo() ? $media->getMediaUrl($product->getVideo()) : null,
  228.                 "videoImg"       => $media->media($product->getVideoImage()),
  229.                 "img"            => $media->media($product->getImage()),
  230.                 "imgCover"       => $media->media($product->getImageCover()),
  231.                 "dataSheet"      => $product->getDataSheet(),
  232.                 "safetySheet"    => $product->getSafetySheet(),
  233.                 "safetySheetCB"  => $product->getSafetySheetCb(),
  234.                 "transportSheet" => $product->getTransportSheet(),
  235.                 "packedColors"   => $product->getPackedColors(),
  236.                 "linkMP"         => $product->getLinkMp(),
  237.                 "colors"         => array_values(array_map(
  238.                                                      fn(ProductColor $item) => [
  239.                                                          'id'    => $item->getId(),
  240.                                                          'name'  => $item->getName(),
  241.                                                          'hexa'  => $item->getColorHexa(),
  242.                                                          'image' => $media->media($item->getImage())
  243.                                                      ],
  244.                                                      array_filter(iterator_to_array($product->getColors()), fn($item) => $item->isPublic())
  245.                                                  )),
  246.                 "filtros"        => array_values(array_map(
  247.                                                      fn(ProductFilter $item) => [
  248. //                                                         'id'    => $item->getId(),
  249.                                                          'superficie'  => $item->getFilter1() ? $item->getFilter1()->getName() : null,
  250.                                                          'ambiente'  => $item->getFilter2() ? $item->getFilter2()->getName() : null,
  251.                                                      ],
  252.                                                      array_filter(iterator_to_array($product->getFilters()))
  253.                                                  ))
  254.             ];
  255.         }
  256.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  257.     }
  258.     /**
  259.      * @Route("/data/newfilter.json", name="data_new_filter")
  260.      */
  261.     public function dataNewFilterAction(Request $requestProductCategoryRepository $categoryRepositoryMediaExtension $media): Response
  262.     {
  263.         $cat $request->query->get('cat');
  264.         $filters   = [];
  265.         $filters1  = [];
  266.         $filters2  = [];
  267.         $filters3  = [];
  268.         $tmp_prods = [];
  269.         if ($cat == 'h') {
  270.             $categories $categoryRepository->findBy(['general_category' => 2]);
  271.         } elseif ($cat == 'c') {
  272.             $categories $categoryRepository->findBy(['general_category' => 1]);
  273.         } else {
  274.             $categories $categoryRepository->findBy(['id' => $cat]);
  275.         }
  276.         /** @var ProductCategory[] $categories */
  277.         foreach ($categories as $category) {
  278.             foreach ($category->getProducts() as $product) {
  279.                 foreach ($product->getFilters() as $filter) {
  280.                     if (!$filter->getFilter1() || !$filter->getFilter2()) {
  281.                         continue;
  282.                     }
  283.                     $filters1[$filter->getFilter1()->getId()] = [
  284.                         'id'   => $filter->getFilter1()->getId(),
  285.                         'name' => $filter->getFilter1()->getName(),
  286.                     ];
  287.                     $filters2[$filter->getFilter1()->getId()][$filter->getFilter2()->getId()] = [
  288.                         'id'   => $filter->getFilter2()->getId(),
  289.                         'name' => $filter->getFilter2()->getName(),
  290.                     ];
  291.                     if ($filter->getFilter3()) {
  292.                         $tmp_prods[$filter->getFilter1()->getId()][$filter->getFilter2()->getId()][$filter->getFilter3()->getId()][$filter->getProduct()->getId()] = $filter->getProduct()->getId();
  293.                         $filters3[$filter->getFilter1()->getId()][$filter->getFilter2()->getId()][$filter->getFilter3()->getId()] = [
  294.                             'id'   => $filter->getFilter3()->getId(),
  295.                             'name' => $filter->getFilter3()->getName(),
  296.                         ];
  297.                     } else {
  298.                         $tmp_prods[$filter->getFilter1()->getId()][$filter->getFilter2()->getId()][$filter->getProduct()->getId()] = $filter->getProduct()->getId();
  299.                         $filters3                                                                                                  = [];
  300.                     }
  301.                 }
  302.             }
  303.         }
  304.         foreach ($filters1 as $key => $item) {
  305.             foreach ($filters2[$key] as $key2 => $item2) {
  306.                 if ($filter->getFilter3()) {
  307.                     foreach ($filters3[$key][$key2] as $key3 => $item3) {
  308.                         $fil3[$key][$key2][] = array_merge($filters3[$key][$key2][$key3], ['products' => array_values($tmp_prods[$key][$key2][$key3])]);
  309.                     }
  310.                     $fil2[$key][] = array_merge($filters2[$key][$key2], ['AmbienceType' => $fil3[$key][$key2]]);
  311.                 } else {
  312.                     $fil2[$key][] = $filters2[$key][$key2];
  313.                 }
  314.             }
  315.             $filters[] = array_merge($filters1[$key], ['productType' => $fil2[$key]]);
  316.         }
  317.         return $this->json($filters200, [], ['json_encode_options' => JSON_PRETTY_PRINT]);
  318.     }
  319.     /**
  320.      * @Route("/data/cataloge.json", name="data_cataloge")
  321.      */
  322.     public function ManualsAndCatalogsAction(Request $requestManualsAndCatalogsRepository $manualsAndCatalogsRepositoryMediaExtension $media): Response
  323.     {
  324.         /** @var ManualsAndCatalogs[] $entities */
  325.         $entities $manualsAndCatalogsRepository->findBy(['public' => true]);
  326.         $data = [];
  327.         foreach ($entities as $entity) {
  328.             $data[] = [
  329.                 "id"             => $entity->getId(),
  330.                 "name"           => $entity->getName(),
  331.                 "path"           => $entity->getSlug(),
  332.                 "img"            => $media->media($entity->getImage()),
  333.                 "description"    => $entity->getDescription(),
  334.                 "file"           => $media->media($entity->getFile()),
  335.                 "seoTitle"       => $entity->getSeo()->getTitle(),
  336.                 "seoDescription" => $entity->getSeo()->getDescription(),
  337.                 "seoKeyword"     => $entity->getSeo()->getKeywords()
  338.             ];
  339.         }
  340.         return $this->json($data200, [], ['json_encode_options' => JSON_PRETTY_PRINT]);
  341.     }
  342.     /**
  343.      * @Route("/data/bigWorks.json", name="data_big_works")
  344.      */
  345.     public function bigWorksAction(BigWorksRepository $repositoryMediaExtension $media): Response
  346.     {
  347.         $big_works $repository->findBy(['public' => true]);
  348.         $data      = [];
  349.         /** @var BigWorks[] $big_works */
  350.         foreach ($big_works as $item) {
  351.             $data[] = [
  352.                 "id"             => $item->getid(),
  353.                 "path"           => $item->getSlug(),
  354.                 "time"           => $item->getPublicDate()->format('F Y'),
  355.                 "title"          => $item->getName(),
  356.                 "description"    => $item->getDescription(),
  357.                 "news"           => $item->getBody(),
  358.                 "img"            => $media->media($item->getImage()),
  359.                 "img_cover"      => $media->media($item->getImageCover()),
  360.                 "seoTitle"       => $item->getSeo()->getTitle(),
  361.                 "seoDescription" => $item->getSeo()->getDescription(),
  362.                 "seoKeyword"     => $item->getSeo()->getKeywords()
  363.             ];
  364.         }
  365.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  366.     }
  367.     /**
  368.      * @Route("/data/bannerBigWorks.json", name="data_banner_big_works")
  369.      */
  370.     public function bannerBigWorksAction(BigWorkPageRepository $repositoryMediaExtension $media): Response
  371.     {
  372.         /** @var BigWorkPage $big_works */
  373.         $big_works $repository->findOneBy([]);
  374.         $data[]    = [
  375.             "id"             => $big_works->getId(),
  376.             "bannerDeskt"    => $media->media($big_works->getImage()),
  377.             "bannerMobile"   => $media->media($big_works->getImageMobile()),
  378.             "seoTitle"       => $big_works->getSeo()->getTitle(),
  379.             "seoDescription" => $big_works->getSeo()->getDescription(),
  380.             "seoKeyword"     => $big_works->getSeo()->getKeywords()
  381.         ];
  382.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  383.     }
  384.     /**
  385.      * @Route("/data/bannerCataloge.json", name="data_banner_cataloge")
  386.      */
  387.     public function bannerCatalogeAction(ManualsAndCatalogsPageRepository $repositoryMediaExtension $media): Response
  388.     {
  389.         /** @var ManualsAndCatalogsPage $entity */
  390.         $entity $repository->findOneBy([]);
  391.         $data[] = [
  392.             "id"             => $entity->getId(),
  393.             "bannerDeskt"    => $media->media($entity->getImage()),
  394.             "bannerMobile"   => $media->media($entity->getImageMobile()),
  395.             "seoTitle"       => $entity->getSeo()->getTitle(),
  396.             "seoDescription" => $entity->getSeo()->getDescription(),
  397.             "seoKeyword"     => $entity->getSeo()->getKeywords()
  398.         ];
  399.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  400.     }
  401.     /**
  402.      * @Route("/data/bannerNews.json", name="data_banner_news")
  403.      */
  404.     public function bannerNewsAction(NewsPageRepository $repositoryMediaExtension $media): Response
  405.     {
  406.         /** @var NewsPage $entity */
  407.         $entity $repository->findOneBy([]);
  408.         $data[] = [
  409.             "id"             => $entity->getId(),
  410.             "bannerDeskt"    => $media->media($entity->getImage()),
  411.             "bannerMobile"   => $media->media($entity->getImageMobile()),
  412.             "seoTitle"       => $entity->getSeo()->getTitle(),
  413.             "seoDescription" => $entity->getSeo()->getDescription(),
  414.             "seoKeyword"     => $entity->getSeo()->getKeywords()
  415.         ];
  416.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  417.     }
  418.     /**
  419.      * @Route("/data/bannerProduct.json", name="data_banner_product")
  420.      */
  421.     public function bannerProductAction(ProductsPageRepository $repositoryMediaExtension $media): Response
  422.     {
  423.         /** @var ProductsPage $entity */
  424.         $entity $repository->findOneBy([]);
  425.         $data[] = [
  426.             "id"             => $entity->getId(),
  427.             "bannerDeskt"    => $media->media($entity->getImage()),
  428.             "bannerMobile"   => $media->media($entity->getImageMobile()),
  429.             "seoTitle"       => $entity->getSeo()->getTitle(),
  430.             "seoDescription" => $entity->getSeo()->getDescription(),
  431.             "seoKeyword"     => $entity->getSeo()->getKeywords()
  432.         ];
  433.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  434.     }
  435.     /**
  436.      * @Route("/data/lines.json", name="data_lines")
  437.      */
  438.     public function linesAction(GeneralCategoryRepository $repositoryMediaExtension $media): Response
  439.     {
  440.         /** @var GeneralCategory $entity */
  441.         $entities $repository->findBy([], ['position' => 'ASC']);
  442.         $data     = [];
  443.         foreach ($entities as $entity) {
  444.             $data[] = [
  445.                 "id"             => $entity->getId(),
  446.                 "name"           => $entity->getName(),
  447.                 "path"           => $entity->getSlug(),
  448.                 "image"          => $media->media($entity->getImage()),
  449.                 "bannerDesk"     => $media->media($entity->getImageDesk()),
  450.                 "bannerMobile"   => $media->media($entity->getImageMobile()),
  451.                 "seoTitle"       => $entity->getSeo()->getTitle(),
  452.                 "seoDescription" => $entity->getSeo()->getDescription(),
  453.                 "seoKeyword"     => $entity->getSeo()->getKeywords(),
  454.             ];
  455.         }
  456.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  457.     }
  458.     /**
  459.      * @Route("/data/search.json", name="data_search")
  460.      */
  461.     public function searchAction(SearchPageRepository $repositoryMediaExtension $media): Response
  462.     {
  463.         /** @var ProductsPage $entity */
  464.         $entity $repository->findOneBy([]);
  465.         $data[] = [
  466.             "id"             => $entity->getId(),
  467.             "name"           => $entity->getName(),
  468.             "path"           => $entity->getSlug(),
  469.             "bannerDeskt"    => $media->media($entity->getImage()),
  470.             "bannerMobile"   => $media->media($entity->getImageMobile()),
  471.             "seoTitle"       => $entity->getSeo()->getTitle(),
  472.             "seoDescription" => $entity->getSeo()->getDescription(),
  473.             "seoKeyword"     => $entity->getSeo()->getKeywords(),
  474.         ];
  475.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  476.     }
  477.     /**
  478.      * @Route("/data/us.json", name="data_us")
  479.      */
  480.     public function usAction(UsPageRepository $repositoryMediaExtension $media): Response
  481.     {
  482.         /** @var UsPage $entity */
  483.         $entity $repository->findOneBy([]);
  484.         $data[] = [
  485.             "id"             => $entity->getId(),
  486.             "bannerDeskt"    => $media->media($entity->getImage()),
  487.             "bannerMobile"   => $media->media($entity->getImageMobile()),
  488.             "seoTitle"       => $entity->getSeo()->getTitle(),
  489.             "seoDescription" => $entity->getSeo()->getDescription(),
  490.             "seoKeyword"     => $entity->getSeo()->getKeywords(),
  491.         ];
  492.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  493.     }
  494.     /**
  495.      * @Route("/data/region.json", name="data_region")
  496.      */
  497.     public function regionAction(RegionRepository $repository): Response
  498.     {
  499.         /** @var Regiones[] $entity */
  500.         $entities $repository->findBy([]);
  501.         $data     = [];
  502.         foreach ($entities as $item) {
  503.             $comm = [];
  504.             foreach ($item->getComunas() as $comuna) {
  505.                 $comm[] = [
  506.                     'id'   => $comuna->getId(),
  507.                     'name' => $comuna->getEtiqueta(),
  508.                 ];
  509.             }
  510.             $data[] = [
  511.                 "id"     => $item->getId(),
  512.                 "name"   => $item->getEtiqueta(),
  513.                 "comuna" => $comm,
  514.             ];
  515.         }
  516.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  517.     }
  518.     /**
  519.      * @Route("/data/typeForm.json", name="data_type_form")
  520.      */
  521.     public function typeFormAction(ContactQueryTypeRepository $contactQueryTypeRepository): Response
  522.     {
  523.         /** @var ContactQueryType[] $entity */
  524.         $entities $contactQueryTypeRepository->findBy([]);
  525.         $data array_values(array_map(
  526.                                  fn($item) => [
  527.                                      'id'   => $item->getId(),
  528.                                      'name' => $item->getName(),
  529.                                  ],
  530.                                  array_filter($entities, fn($item) => $item->isPublic())
  531.                              ));
  532.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  533.     }
  534.     /**
  535.      * @Route("/data/contact", name="contact")
  536.      */
  537.     public function contactAction(ValidatorInterface $validatorRequest $requestMailerInterface $mailerComunasRepository $comunasRepositoryRegionRepository $regionRepositoryContactQueryTypeRepository $contactQueryTypeRepositoryConfigurationRepository $configurationRepositoryEntityManagerInterface $entityManager)
  538.     {
  539.         $entity = new Contact();
  540.         $post   $request;
  541.         $config $configurationRepository->findOneBy([]);
  542.         $entity->setName($post->get('name'));
  543.         $query_type $contactQueryTypeRepository->findOneBy(['id' => $post->get('type')]);
  544.         $entity->setQueryType($query_type);
  545.         $entity->setEmail($post->get('email'));
  546.         $entity->setPhone($post->get('phone'));
  547.         $region $regionRepository->findOneBy(['id' => $post->get('region')]);
  548.         $entity->setRegion($region);
  549.         $commune $comunasRepository->findOneBy(['id' => $post->get('commune')]);
  550.         $entity->setCommune($commune);
  551.         $entity->setActivity($post->get('activity'));
  552.         $entity->setMessage($post->get('inquiry'));
  553.         $entity->setTerms($post->get('condition'));
  554.         $validate $validator->validate($entity);
  555.         $errors = [];
  556.         if (count($validate) > 0) {
  557.             foreach ($validate as $error) {
  558.                 $errors[$error->getPropertyPath()] = $error->getMessage();
  559.             }
  560.             $result[] = [
  561.                 'result' => 'error',
  562.                 'errors' => $errors
  563.             ];
  564.         } else {
  565.             $result[] = [
  566.                 'result' => 'success',
  567.                 'errors' => []
  568.             ];
  569.             $entityManager->persist($entity);
  570.             $entityManager->flush();
  571.             $email = (new Email());
  572.             $email->from('site@chilcorrofin.cl');
  573.             $i 0;
  574.             foreach (explode(','$config->getReceibers()) as $item) {
  575.                 if ($i === 0) {
  576.                     $email->to($item);
  577.                 } else {
  578.                     $email->addCc($item);
  579.                 }
  580.             }
  581.             $email->addBcc('mfigueroa@digitalmarketing.cl');
  582.             $email->subject('Mensaje de Contácto')
  583.                 ->html($this->renderView('emails/contact.html.twig', [
  584.                     'entity' => $entity
  585.                 ]));
  586.             $mailer->send($email);
  587. //            $this->sendMailInfoAPi($entity->getName(), $entity->getEmail(), $entity->getPhone(), $entity->getQueryType()->getName(), $entity->getActivity(), $entity->getRegion()->getEtiqueta(), $entity->getCommune()->getEtiqueta(), $entity->getMessage(), 'Chilcorrofin');
  588.         }
  589.         return $this->json($result200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  590.     }
  591.     /**
  592.      * @Route("/data/footer.json", name="data_footer")
  593.      */
  594.     public function footerAction(ConfigurationRepository $configurationRepository): Response
  595.     {
  596.         /** @var Configuration $entity */
  597.         $entities $configurationRepository->findOneBy([]);
  598.         $data[] = [
  599.             "id"          => $entities->getId(),
  600.             "address"     => $entities->getAddress(),
  601.             "linkAdrres"  => $entities->getAddresslink(),
  602.             "phome"       => $entities->getPhone(),
  603.             "techContact" => $entities->getTechContact(),
  604.             "mobile"      => $entities->getMobile(),
  605.             "whatsapp"    => $entities->getWhatsapp(),
  606.         ];
  607.         return $this->json($data200, [], ['json_encode_options' => JSON_UNESCAPED_SLASHES]);
  608.     }
  609.     public function sendMailInfoAPi($name$email$phone$type$activity$region$commune$message$site)
  610.     {
  611.         $data_ex = [
  612.             'name'     => $name,
  613.             'email'    => $email,
  614.             'phone'    => $phone,
  615.             'type'     => $type,
  616.             'activity' => $activity,
  617.             'region'   => $region,
  618.             'commune'  => $commune,
  619.             'message'  => $message,
  620.             'site'     => $site
  621.         ];
  622.         $data_ex json_encode($data_ex);
  623.         $data_ex base64_encode($data_ex);
  624.         $ch curl_init();
  625.         curl_setopt($chCURLOPT_URL"https://www.codelpa.cl/api/");
  626.         curl_setopt($chCURLOPT_POST1);
  627.         curl_setopt($chCURLOPT_POSTFIELDS,
  628.                     "token=3654bc5e9ddw32f83cee5c37403e7477&data=$data_ex");
  629.         curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  630.         $server_output curl_exec($ch);
  631.         curl_close($ch);
  632.     }
  633. }