src/Controller/DefaultController.php line 196

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