<?php
namespace App\Controller;
use App\Normalizer\PostNormalizer;
use App\Service\Internal\CmsService;
use App\Service\Internal\HomePageService;
use App\Utils\DeviceInfo;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class NewsController extends AbstractController
{
public function index(
HomePageService $newsPageService,
CmsService $cmsService,
PostNormalizer $postNormalizer
): Response {
$parameters = $newsPageService->getRenderParameters();
$parameters['isXmlHttpMode'] = true;
$cmsPages = $cmsService->getPages();
$menuPages = [];
$footerPages = [];
foreach ($cmsPages as $page) {
if ($page->hook == 'MENU') {
$menuPages[$page->id] = $page;
}
if ($page->hook == 'FOOTER') {
$footerPages[$page->id] = $page;
}
}
$posts = $cmsService->getPosts();
$posts = $postNormalizer->normalize($posts);
$parameters['menuPages'] = $menuPages;
$parameters['footerPages'] = $footerPages;
$parameters['firstPost'] = current(array_slice($posts, 0, 1));
$parameters['posts'] = array_slice($posts, 1);
$parameters = DeviceInfo::addDeviceParameters($parameters);
return $this->render('pages/sim/news.html.twig', $parameters);
}
public function getPost(
$id,
HomePageService $newsPageService,
CmsService $cmsService
): Response {
$parameters = $newsPageService->getRenderParameters();
$parameters['isXmlHttpMode'] = true;
$cmsPages = $cmsService->getPages();
$menuPages = [];
$footerPages = [];
foreach ($cmsPages as $page) {
if ($page->hook == 'MENU') {
$menuPages[$page->id] = $page;
}
if ($page->hook == 'FOOTER') {
$footerPages[$page->id] = $page;
}
}
$parameters['menuPages'] = $menuPages;
$parameters['footerPages'] = $footerPages;
$posts = $cmsService->getPosts();
$requestedPost = null;
foreach ($posts as $post) {
if ($post->id === $id) {
$requestedPost = $post;
}
}
if ($requestedPost === null) {
return $this->redirectToRoute('news');
}
$parameters['post'] = $requestedPost;
return $this->render('pages/sim/article.html.twig', $parameters);
}
}