src/Controller/HomeController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\ApiRequest;
  4. use App\Service\UserService;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class HomeController extends AbstractController
  11. {
  12.     /**
  13.      * @Route("/home", name="home")
  14.      */
  15.     public function index(ApiRequest $apiRequestUserService $userService)
  16.     {
  17.         // HOME ICONS
  18.         // $icons = $apiRequest->getHomeIcons();
  19.         // LAST ARTICLES
  20.         $lastArticles $apiRequest->getContentPaginated('article',1,3);
  21.         // LAST PROJECTS
  22.         $lastProjects $apiRequest->getContentPaginated('project',1,3);
  23.         // LAST MATERIALS
  24.         $lastMaterials $apiRequest->getContentPaginated('material',1,3);
  25.         // LAST DETAILS
  26.         $lastDetails $apiRequest->getContentPaginated('constructiveDetail',1,3);
  27.         // LAST NEWS (AGENDA ARTICLES)
  28.         // $lastNews = $apiRequest->getContentPaginated('article',1,3,'','','',true);
  29.         // FEATURED CONTENT
  30.         $featured['material'] = $apiRequest->getFeatured('material');
  31.         $featured['constructiveDetail'] = $apiRequest->getFeatured('constructiveDetail');
  32.         $featured['article'] = $apiRequest->getFeatured('article');
  33.         // MAIN SLIDER
  34.         $images = [
  35.             [
  36.                 'src' => 'assetsv2/img/homepage/slider/1-portada-febrero-2020.webp',
  37.                 'src_fallback' => 'assetsv2/img/homepage/slider/1-portada-febrero-2020.jpg',
  38.                 'copy' => '© Luis Díaz'
  39.             ],
  40.             [
  41.                 'src' => 'assetsv2/img/homepage/slider/2-portada-febrero-2020.webp',
  42.                 'src_fallback' => 'assetsv2/img/homepage/slider/2-portada-febrero-2020.jpg',
  43.                 'copy' => ''
  44.             ],
  45.             [
  46.                 'src' => 'assetsv2/img/homepage/slider/3-portada-febrero-2020.webp',
  47.                 'src_fallback' => 'assetsv2/img/homepage/slider/3-portada-febrero-2020.jpg',
  48.                 'copy' => '© Steven Holl'
  49.             ],
  50.             [
  51.                 'src' => 'assetsv2/img/homepage/slider/4-portada-febrero-2020.webp',
  52.                 'src_fallback' => 'assetsv2/img/homepage/slider/4-portada-febrero-2020.jpg',
  53.                 'copy' => '© Adrià Goula'
  54.             ],
  55.             [
  56.                 'src' => 'assetsv2/img/homepage/slider/5-portada-febrero-2020.webp',
  57.                 'src_fallback' => 'assetsv2/img/homepage/slider/5-portada-febrero-2020.jpg',
  58.                 'copy' => '© Jerónimo Junquera'
  59.             ],
  60.             [
  61.                 'src' => 'assetsv2/img/homepage/slider/6-portada-febrero-2020.webp',
  62.                 'src_fallback' => 'assetsv2/img/homepage/slider/6-portada-febrero-2020.jpg',
  63.                 'copy' => '© Adrià Goula'
  64.             ],
  65.         ];
  66.         // SLIDER PROYECTOS
  67.         $projects $apiRequest->getFeatured('project');
  68.         foreach($projects as $key => $project){
  69.             if(strlen($project['title']['es']) > 50){
  70.                 $projects[$key]['title']['es'] = substr($project['title']['es'], 050).'...';
  71.             }
  72.         }
  73.         $calendar $apiRequest->getArticlesBySubtypeCalendar(date('Y/m').'/01');
  74.         // Logos media partners
  75.         $mediaPartners $apiRequest->getMediaPartners();
  76.         return $this->render('home/index.html.twig', [
  77.             'controller_name' => 'HomeController',
  78.             'featured' => $featured,
  79.             // 'icons' => $icons,
  80.             'lastArticles' => $lastArticles,
  81.             'lastProjects' => $lastProjects,
  82.             'lastMaterials' => $lastMaterials,
  83.             'lastDetails' => $lastDetails,
  84.             //'lastNews' => $lastNews,
  85.             'images' => $images,
  86.             'projects' => $projects,
  87.             'calendar' => $calendar['data'],
  88.             'isHomepage' => true,
  89.             'mediaPartners' => $mediaPartners,
  90.             'user' => $userService->checkUser()
  91.         ]);
  92.     }
  93.     /**
  94.      * @Route("/about-us/", name="about")
  95.      */
  96.     public function about(ApiRequest $apiRequestUserService $userService)
  97.     {
  98.         // Logos media partners
  99.         $mediaPartners $apiRequest->getMediaPartners();
  100.         return $this->render('static/about.html.twig', [
  101.             'controller_name' => 'HomeController',
  102.             'mediaPartners' => $mediaPartners,
  103.             'user' => $userService->checkUser()
  104.         ]);
  105.     }
  106.     /**
  107.      * @Route("/advertising/", name="advertising")
  108.      */
  109.     public function advertising(UserService $userService)
  110.     {
  111.         return $this->render('static/advertising.html.twig', [
  112.             'controller_name' => 'HomeController',
  113.             'user' => $userService->checkUser()
  114.         ]);
  115.     }
  116.     /**
  117.      * @Route("/contact/", name="contact")
  118.      */
  119.     public function contact(ApiRequest $apiRequestUserService $userServiceRequest $request)
  120.     {
  121.         if($request->isXmlHttpRequest()){
  122.             $user $userService->checkUser();
  123.             if(!$user){
  124.                 return new Response(json_encode(['error' => 'Debes iniciar sesión como usuario para poder enviar el mensaje']));
  125.             }
  126.             $message trim($request->get('message'));
  127.             $subject trim($request->get('subject'));
  128.             $prefix trim($request->get('prefix'));
  129.             $phone trim($request->get('phone'));
  130.             $name trim($request->get('name'));
  131.             $email trim($request->get('email'));
  132.             $privacy trim($request->get('privacy'));
  133.             if(!$message || !$subject || !$phone || !$email || !$name || !$prefix || !$privacy){
  134.                 return new Response(json_encode(['error' => 'Rellene los campos obligatorios']));
  135.             }else if(!filter_var($emailFILTER_VALIDATE_EMAIL)){
  136.                 return new Response(json_encode(['error' => 'La dirección de correo electrónico no es válida']));
  137.             }
  138.             $form = [
  139.                 'phone' => $prefix.' '.$phone,
  140.                 'email' => $email,
  141.                 'subject' => $subject,
  142.                 'sender' => $name,
  143.                 'message' => $message
  144.             ];
  145.             $result $apiRequest->addContactGeneral($form$user['token']);
  146.             return new Response(json_encode($result));
  147.         }else {
  148.             $csrfToken $this->get('security.csrf.token_manager')->getToken('contact')->getValue();
  149.             return $this->render('static/contact.html.twig', [
  150.                 'controller_name' => 'HomeController',
  151.                 'user' => $userService->checkUser(),
  152.                 'csrfToken' => $csrfToken
  153.             ]);
  154.         }
  155.     }
  156.     /**
  157.      * @Route("/section/faqs/", name="faqs")
  158.      */
  159.     public function faqs(UserService $userService)
  160.     {
  161.         return $this->render('static/faqs.html.twig', [
  162.             'controller_name' => 'HomeController',
  163.             'user' => $userService->checkUser()
  164.         ]);
  165.     }
  166.     /**
  167.      * @Route("/section/cookies/", name="cookies")
  168.      */
  169.     public function cookies(UserService $userService)
  170.     {
  171.         return $this->render('static/cookies.html.twig', [
  172.             'controller_name' => 'HomeController',
  173.             'user' => $userService->checkUser()
  174.         ]);
  175.     }
  176.     /**
  177.      * @Route("/section/legal/", name="legal")
  178.      */
  179.     public function legal(UserService $userService)
  180.     {
  181.         return $this->render('static/legal.html.twig', [
  182.             'controller_name' => 'HomeController',
  183.             'user' => $userService->checkUser()
  184.         ]);
  185.     }
  186.     /**
  187.      * @Route("/section/privacy/", name="privacy")
  188.      */
  189.     public function privacy(UserService $userService)
  190.     {
  191.         return $this->render('static/privacy.html.twig', [
  192.             'controller_name' => 'HomeController',
  193.             'user' => $userService->checkUser()
  194.         ]);
  195.     }
  196.     /**
  197.      * @Route("/section/minisite/", name="minisite")
  198.      */
  199.     public function minisite(UserService $userService)
  200.     {
  201.         return $this->render('static/minisite.html.twig', [
  202.             'controller_name' => 'HomeController',
  203.             'user' => $userService->checkUser()
  204.         ]);
  205.     }
  206.     /**
  207.      * @Route("/bildia_feed/", name="bildia_feed")
  208.      */
  209.     public function bildia_feed(ApiRequest $apiRequest)
  210.     {
  211.         // Last 6 articles
  212.         $last_articles $apiRequest->getContentPaginated('article',1,6);
  213.         return new JsonResponse($last_articles);
  214.     }
  215. }