<?php
namespace App\Controller;
use App\Service\ApiRequest;
use App\Service\UserService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController
{
/**
* @Route("/home", name="home")
*/
public function index(ApiRequest $apiRequest, UserService $userService)
{
// HOME ICONS
// $icons = $apiRequest->getHomeIcons();
// LAST ARTICLES
$lastArticles = $apiRequest->getContentPaginated('article',1,3);
// LAST PROJECTS
$lastProjects = $apiRequest->getContentPaginated('project',1,3);
// LAST MATERIALS
$lastMaterials = $apiRequest->getContentPaginated('material',1,3);
// LAST DETAILS
$lastDetails = $apiRequest->getContentPaginated('constructiveDetail',1,3);
// LAST NEWS (AGENDA ARTICLES)
// $lastNews = $apiRequest->getContentPaginated('article',1,3,'','','',true);
// FEATURED CONTENT
$featured['material'] = $apiRequest->getFeatured('material');
$featured['constructiveDetail'] = $apiRequest->getFeatured('constructiveDetail');
$featured['article'] = $apiRequest->getFeatured('article');
// MAIN SLIDER
$images = [
[
'src' => 'assetsv2/img/homepage/slider/1-portada-febrero-2020.webp',
'src_fallback' => 'assetsv2/img/homepage/slider/1-portada-febrero-2020.jpg',
'copy' => '© Luis Díaz'
],
[
'src' => 'assetsv2/img/homepage/slider/2-portada-febrero-2020.webp',
'src_fallback' => 'assetsv2/img/homepage/slider/2-portada-febrero-2020.jpg',
'copy' => ''
],
[
'src' => 'assetsv2/img/homepage/slider/3-portada-febrero-2020.webp',
'src_fallback' => 'assetsv2/img/homepage/slider/3-portada-febrero-2020.jpg',
'copy' => '© Steven Holl'
],
[
'src' => 'assetsv2/img/homepage/slider/4-portada-febrero-2020.webp',
'src_fallback' => 'assetsv2/img/homepage/slider/4-portada-febrero-2020.jpg',
'copy' => '© Adrià Goula'
],
[
'src' => 'assetsv2/img/homepage/slider/5-portada-febrero-2020.webp',
'src_fallback' => 'assetsv2/img/homepage/slider/5-portada-febrero-2020.jpg',
'copy' => '© Jerónimo Junquera'
],
[
'src' => 'assetsv2/img/homepage/slider/6-portada-febrero-2020.webp',
'src_fallback' => 'assetsv2/img/homepage/slider/6-portada-febrero-2020.jpg',
'copy' => '© Adrià Goula'
],
];
// SLIDER PROYECTOS
$projects = $apiRequest->getFeatured('project');
foreach($projects as $key => $project){
if(strlen($project['title']['es']) > 50){
$projects[$key]['title']['es'] = substr($project['title']['es'], 0, 50).'...';
}
}
$calendar = $apiRequest->getArticlesBySubtypeCalendar(date('Y/m').'/01');
// Logos media partners
$mediaPartners = $apiRequest->getMediaPartners();
return $this->render('home/index.html.twig', [
'controller_name' => 'HomeController',
'featured' => $featured,
// 'icons' => $icons,
'lastArticles' => $lastArticles,
'lastProjects' => $lastProjects,
'lastMaterials' => $lastMaterials,
'lastDetails' => $lastDetails,
//'lastNews' => $lastNews,
'images' => $images,
'projects' => $projects,
'calendar' => $calendar['data'],
'isHomepage' => true,
'mediaPartners' => $mediaPartners,
'user' => $userService->checkUser()
]);
}
/**
* @Route("/about-us/", name="about")
*/
public function about(ApiRequest $apiRequest, UserService $userService)
{
// Logos media partners
$mediaPartners = $apiRequest->getMediaPartners();
return $this->render('static/about.html.twig', [
'controller_name' => 'HomeController',
'mediaPartners' => $mediaPartners,
'user' => $userService->checkUser()
]);
}
/**
* @Route("/advertising/", name="advertising")
*/
public function advertising(UserService $userService)
{
return $this->render('static/advertising.html.twig', [
'controller_name' => 'HomeController',
'user' => $userService->checkUser()
]);
}
/**
* @Route("/contact/", name="contact")
*/
public function contact(ApiRequest $apiRequest, UserService $userService, Request $request)
{
if($request->isXmlHttpRequest()){
$user = $userService->checkUser();
if(!$user){
return new Response(json_encode(['error' => 'Debes iniciar sesión como usuario para poder enviar el mensaje']));
}
$message = trim($request->get('message'));
$subject = trim($request->get('subject'));
$prefix = trim($request->get('prefix'));
$phone = trim($request->get('phone'));
$name = trim($request->get('name'));
$email = trim($request->get('email'));
$privacy = trim($request->get('privacy'));
if(!$message || !$subject || !$phone || !$email || !$name || !$prefix || !$privacy){
return new Response(json_encode(['error' => 'Rellene los campos obligatorios']));
}else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
return new Response(json_encode(['error' => 'La dirección de correo electrónico no es válida']));
}
$form = [
'phone' => $prefix.' '.$phone,
'email' => $email,
'subject' => $subject,
'sender' => $name,
'message' => $message
];
$result = $apiRequest->addContactGeneral($form, $user['token']);
return new Response(json_encode($result));
}else {
$csrfToken = $this->get('security.csrf.token_manager')->getToken('contact')->getValue();
return $this->render('static/contact.html.twig', [
'controller_name' => 'HomeController',
'user' => $userService->checkUser(),
'csrfToken' => $csrfToken
]);
}
}
/**
* @Route("/section/faqs/", name="faqs")
*/
public function faqs(UserService $userService)
{
return $this->render('static/faqs.html.twig', [
'controller_name' => 'HomeController',
'user' => $userService->checkUser()
]);
}
/**
* @Route("/section/cookies/", name="cookies")
*/
public function cookies(UserService $userService)
{
return $this->render('static/cookies.html.twig', [
'controller_name' => 'HomeController',
'user' => $userService->checkUser()
]);
}
/**
* @Route("/section/legal/", name="legal")
*/
public function legal(UserService $userService)
{
return $this->render('static/legal.html.twig', [
'controller_name' => 'HomeController',
'user' => $userService->checkUser()
]);
}
/**
* @Route("/section/privacy/", name="privacy")
*/
public function privacy(UserService $userService)
{
return $this->render('static/privacy.html.twig', [
'controller_name' => 'HomeController',
'user' => $userService->checkUser()
]);
}
/**
* @Route("/section/minisite/", name="minisite")
*/
public function minisite(UserService $userService)
{
return $this->render('static/minisite.html.twig', [
'controller_name' => 'HomeController',
'user' => $userService->checkUser()
]);
}
/**
* @Route("/bildia_feed/", name="bildia_feed")
*/
public function bildia_feed(ApiRequest $apiRequest)
{
// Last 6 articles
$last_articles = $apiRequest->getContentPaginated('article',1,6);
return new JsonResponse($last_articles);
}
}