src/Controller/MagazineController.php line 88
<?php
namespace App\Controller;
use App\Controller\Traits\HreflangsControllerTrait;
use App\Controller\Traits\MetatagsControllerTrait;
use App\Controller\Traits\StaticPageHelperTrait;
use App\Entity\Magazine;
use App\Repository\MagazineRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
class MagazineController extends AbstractController
{
use MetatagsControllerTrait, HreflangsControllerTrait, StaticPageHelperTrait;
private $em;
private $transalor;
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator){
$this->em = $em;
$this->transalor = $translator;
}
/**
* MAGAZINE
*/
#[Route(['it' => '/magazine',
'en' => '/en/magazine',
'es' => '/es/revista'], name: 'app_magazine_index')]
public function magazineIndex(Request $request, EntityManagerInterface $em)
{
list ($metatags, $hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request, $em, ['it']);
/** @var MagazineRepository $magazineRepository */
$magazineRepository = $this->em->getRepository(Magazine::class);
$magazines = $magazineRepository->findMagazine(1, 'MAGAZINE', $request->getLocale());
$magazinesNumber = $magazineRepository->findAllMagazineByType('MAGAZINE', $request->getLocale());
$pagesNumber = ceil(count($magazinesNumber) / 12);
return $this->render('magazine/magazineIndex.html.twig', [
'magazines' => $magazines,
'magazineType' => 'magazine',
'pages' => $pagesNumber,
'metatags' => $metatags,
'hreflangs' => $hreflangs
]);
}
#[Route(['it' => '/magazine/{slug}',
'en' => '/en/magazine/{slug}',
'es' => '/es/revista/{slug}'], name: 'app_magazine_detail')]
public function magazineDetail(Request $request, string $slug)
{
/** @var MagazineRepository $magazineRepository */
$magazineRepository = $this->em->getRepository(Magazine::class);
$magazine = $magazineRepository->findOneBy([
'type' => 'MAGAZINE',
'isEnabled' => true,
'slug' => $slug,
'locale' => $request->getLocale()
]);
if (!$magazine) {
return $this->redirectToRoute('app_magazine_index');
}
$correlatedMagazines = $magazineRepository->findCorrelatedMagazine('MAGAZINE',$magazine->getId(), $request->getLocale());
$metatags = $this->getMetatags($magazine, 'title', 'text');
return $this->render('magazine/magazineDetail.html.twig', [
'metatags' => $metatags,
'magazine' => $magazine,
'correlatedMagazines' => $correlatedMagazines
]);
}
/**
* NEWS
*/
#[Route(['it' => '/news',
'en' => '/en/news',
'es' => '/es/noticias'], name: 'app_news_index')]
public function newsIndex(Request $request, EntityManagerInterface $em)
{
list ($metatags, $hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request, $em, ['it']);
/** @var MagazineRepository $magazineRepository */
$magazineRepository = $this->em->getRepository(Magazine::class);
$magazines = $magazineRepository->findMagazine(1, 'NEWS', $request->getLocale());
$magazinesNumber = $magazineRepository->findAllMagazineByType('NEWS', $request->getLocale());
$pagesNumber = ceil(count($magazinesNumber) / 12);
return $this->render('magazine/magazineIndex.html.twig', [
'magazines' => $magazines,
'magazineType' => 'news',
'pages' => $pagesNumber,
'metatags' => $metatags,
'hreflangs' => $hreflangs
]);
}
#[Route(['it' => '/news/{slug}',
'en' => '/en/news/{slug}',
'es' => '/es/noticias/{slug}'], name: 'app_news_detail')]
public function newsDetail(Request $request, string $slug)
{
/** @var MagazineRepository $magazineRepository */
$magazineRepository = $this->em->getRepository(Magazine::class);
$magazine = $magazineRepository->findOneBy([
'type' => 'NEWS',
'isEnabled' => true,
'slug' => $slug,
'locale' => $request->getLocale()
]);
if (!$magazine) {
return $this->redirectToRoute('app_news_index');
}
$correlatedMagazines = $magazineRepository->findCorrelatedMagazine('NEWS', $magazine->getId(), $request->getLocale());
$metatags = $this->getMetatags($magazine, 'title', 'text');
return $this->render('magazine/magazineDetail.html.twig', [
'metatags' => $metatags,
'magazine' => $magazine,
'correlatedMagazines' => $correlatedMagazines
]);
}
/**
* SPONSOR
*/
#[Route(['it' => '/sponsor',
'en' => '/en/sponsorship',
'es' => '/es/patrocinios'], name: 'app_sponsor_index')]
public function sponsorIndex(Request $request, EntityManagerInterface $em)
{
list ($metatags, $hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request, $em, ['it']);
/** @var MagazineRepository $magazineRepository */
$magazineRepository = $this->em->getRepository(Magazine::class);
$magazines = $magazineRepository->findMagazine(1, 'SPONSOR', $request->getLocale());
$magazinesNumber = $magazineRepository->findAllMagazineByType('SPONSOR', $request->getLocale());
$pagesNumber = ceil(count($magazinesNumber) / 12);
return $this->render('magazine/magazineIndex.html.twig', [
'magazines' => $magazines,
'magazineType' => 'sponsor',
'pages' => $pagesNumber,
'metatags' => $metatags,
'hreflangs' => $hreflangs
]);
}
#[Route(['it' => '/sponsor/{slug}',
'en' => '/en/sponsorship/{slug}',
'es' => '/es/patrocinios/{slug}'], name: 'app_sponsor_detail')]
public function sponsorDetail(Request $request, string $slug)
{
/** @var MagazineRepository $magazineRepository */
$magazineRepository = $this->em->getRepository(Magazine::class);
$magazine = $magazineRepository->findOneBy([
'type' => 'SPONSOR',
'isEnabled' => true,
'slug' => $slug,
'locale' => $request->getLocale()
]);
if (!$magazine) {
return $this->redirectToRoute('app_sponsor_index');
}
$correlatedMagazines = $magazineRepository->findCorrelatedMagazine('SPONSOR', $magazine->getId(), $request->getLocale());
$metatags = $this->getMetatags($magazine, 'title', 'text');
return $this->render('magazine/magazineDetail.html.twig', [
'metatags' => $metatags,
'magazine' => $magazine,
'correlatedMagazines' => $correlatedMagazines
]);
}
/**
* API GENERALI
*/
#[Route(path: [ '/magazine/api/v1'
], name: 'checkMagazineAjax')]
public function recipeApiIndex(Request $request)
{
if ($request->getMethod() == 'POST') {
$type = $request->get('type');
$current_page = $request->get('page');
/** @var MagazineRepository $magazineRepository */
$magazineRepository = $this->em->getRepository(Magazine::class);
$magazines = $magazineRepository->findMagazine($current_page, $type, $request->getLocale());
$magazinesNumber = $magazineRepository->findAllMagazineByType($type, $request->getLocale());
$pagesNumber = ceil(count($magazinesNumber) / 12);
$response['html'] = $this->renderView('magazine/_magazineApi.html.twig', [
'magazines' => $magazines
]);
$response['pages'] = $pagesNumber;
$response['current_page'] = $current_page;
return new JsonResponse($response);
}
return new JsonResponse('Page not found', 404);
}
}