<?php
namespace DcSiteBundle\Controller\Ford;
use DcSiteBundle\Entity\ReplacementCarCondition;
use DcSiteBundle\Entity\SalesContract;
use DcSiteBundle\Entity\TermsMaintenance;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Router;
class MainController extends BaseController
{
public function redirectFord(): RedirectResponse
{
return $this->redirectToRoute('ford_homepage',[],301);
}
public function index(): Response
{
return $this->baseFordRender('@DcSite/Ford/Main/index.html.twig');
}
public function loadModels(Request $request): JsonResponse
{
$menu = $this->getModelMenuItems($request->getLocale(),'small');
foreach ($menu as &$category) {
unset($category['url']);
foreach($category['cars'] as &$car) {
$url = $this->router->generate('ford_one_car', ['car' => $car['url']], Router::ABSOLUTE_URL);
$currentUrl = $request->server->get('HTTP_REFERER');
$car['url'] = $url == $currentUrl ? '#' : $url;
$car['testDriveUrl'] = $this->router->generate('ford_service_consultation', ['carId' => $car['id']]);
}
}
return new JsonResponse($menu);
}
public function initMenu(Request $request): JsonResponse
{
$menu = $this->getModelMenuItems($request->getLocale(),'small');
foreach ($menu as &$category) {
unset($category['url']);
foreach($category['cars'] as &$car) {
$url = $this->router->generate('ford_one_car', ['car' => $car['url']], Router::ABSOLUTE_URL);
$currentUrl = $request->server->get('HTTP_REFERER');
$car['url'] = $url == $currentUrl ? '#' : $url;
}
}
return new JsonResponse($menu);
}
public function pageNotFound(Request $request): Response
{
$Response = new Response();
$Response->setStatusCode(Response::HTTP_NOT_FOUND);
return $this->baseFordRender('@DcSite/Ford/404.html.twig', ['_locale' => $request->getLocale()],$Response);
}
public function conditionOfSales(): Response
{
$filesByType = $this->em->getRepository(SalesContract::class)->getFilesByTypes($this->getDealer());
return $this->baseFordRender('@DcSite/Ford/condition-of-sales.html.twig', [
'filesByType' => $filesByType,
]);
}
public function termsMaintenance(): Response
{
$files = $this->em->getRepository(TermsMaintenance::class)->findBy(['dealer' => $this->getDealer()], ['begin_date' => 'ASC']);
return $this->baseFordRender('@DcSite/Ford/terms-maintenance.html.twig', [
'mainFile' => array_pop($files),
'files' => $files,
'dealer' => $this->getDealer(),
]);
}
public function termsReplacement(): Response
{
$files = $this->em->getRepository(ReplacementCarCondition::class)->findBy(['dealer' => $this->getDealer()], ['begin_date' => 'DESC']);
return $this->baseFordRender('@DcSite/Ford/Terms/terms-providing-replacement-car.html.twig', [
'files' => $files,
]);
}
}