src/Controller/MagazineController.php line 109

  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\Traits\HreflangsControllerTrait;
  4. use App\Controller\Traits\MetatagsControllerTrait;
  5. use App\Controller\Traits\StaticPageHelperTrait;
  6. use App\Entity\Magazine;
  7. use App\Repository\MagazineRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. class MagazineController extends AbstractController
  16. {
  17.     use MetatagsControllerTraitHreflangsControllerTraitStaticPageHelperTrait;
  18.     private $em;
  19.     private $transalor;
  20.     public function __construct(EntityManagerInterface $emTranslatorInterface $translator){
  21.         $this->em $em;
  22.         $this->transalor $translator;
  23.     }
  24.     /**
  25.      * MAGAZINE
  26.     */
  27.     #[Route(['it' => '/magazine',
  28.         'en' => '/en/magazine',
  29.         'es' => '/es/revista'], name'app_magazine_index')]
  30.     public function magazineIndex(Request $requestEntityManagerInterface $em)
  31.     {
  32.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em, ['it']);
  33.         /** @var MagazineRepository  $magazineRepository */
  34.         $magazineRepository $this->em->getRepository(Magazine::class);
  35.         $magazines $magazineRepository->findMagazine(1'MAGAZINE'$request->getLocale());
  36.         $magazinesNumber $magazineRepository->findAllMagazineByType('MAGAZINE'$request->getLocale());
  37.         $pagesNumber ceil(count($magazinesNumber) / 12);
  38.         return $this->render('magazine/magazineIndex.html.twig', [
  39.             'magazines' => $magazines,
  40.             'magazineType' => 'magazine',
  41.             'pages' => $pagesNumber,
  42.             'metatags' => $metatags,
  43.             'hreflangs' => $hreflangs
  44.         ]);
  45.     }
  46.     #[Route(['it' => '/magazine/{slug}',
  47.     'en' => '/en/magazine/{slug}',
  48.     'es' => '/es/revista/{slug}'], name'app_magazine_detail')]
  49.     public function magazineDetail(Request $requeststring $slug)
  50.     {
  51.         /** @var MagazineRepository  $magazineRepository */
  52.         $magazineRepository $this->em->getRepository(Magazine::class);
  53.         $magazine $magazineRepository->findOneBy([
  54.             'type' => 'MAGAZINE',
  55.             'isEnabled' => true,
  56.             'slug' => $slug,
  57.             'locale' => $request->getLocale()
  58.         ]);
  59.         if (!$magazine) {
  60.             return $this->redirectToRoute('app_magazine_index');
  61.         }
  62.         $correlatedMagazines $magazineRepository->findCorrelatedMagazine('MAGAZINE',$magazine->getId(), $request->getLocale());
  63.         $metatags $this->getMetatags($magazine'title''text');
  64.         return $this->render('magazine/magazineDetail.html.twig', [
  65.             'metatags' => $metatags,
  66.             'magazine' => $magazine,
  67.             'correlatedMagazines' => $correlatedMagazines
  68.         ]);
  69.     }
  70.     /**
  71.      * NEWS
  72.     */
  73.     #[Route(['it' => '/news',
  74.         'en' => '/en/news',
  75.         'es' => '/es/noticias'], name'app_news_index')]
  76.     public function newsIndex(Request $requestEntityManagerInterface $em)
  77.     {
  78.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em, ['it']);
  79.         /** @var MagazineRepository  $magazineRepository */
  80.         $magazineRepository $this->em->getRepository(Magazine::class);
  81.         $magazines $magazineRepository->findMagazine(1'NEWS'$request->getLocale());
  82.         $magazinesNumber $magazineRepository->findAllMagazineByType('NEWS'$request->getLocale());
  83.         $pagesNumber ceil(count($magazinesNumber) / 12);
  84.         return $this->render('magazine/magazineIndex.html.twig', [
  85.             'magazines' => $magazines,
  86.             'magazineType' => 'news',
  87.             'pages' => $pagesNumber,
  88.             'metatags' => $metatags,
  89.             'hreflangs' => $hreflangs
  90.         ]);
  91.     }
  92.     #[Route(['it' => '/news/{slug}',
  93.         'en' => '/en/news/{slug}',
  94.         'es' => '/es/noticias/{slug}'], name'app_news_detail')]
  95.     public function newsDetail(Request $requeststring $slug)
  96.     {
  97.         /** @var MagazineRepository  $magazineRepository */
  98.         $magazineRepository $this->em->getRepository(Magazine::class);
  99.         $magazine $magazineRepository->findOneBy([
  100.             'type' => 'NEWS',
  101.             'isEnabled' => true,
  102.             'slug' => $slug,
  103.             'locale' => $request->getLocale()
  104.         ]);
  105.         if (!$magazine) {
  106.             return $this->redirectToRoute('app_news_index');
  107.         }
  108.         $correlatedMagazines $magazineRepository->findCorrelatedMagazine('NEWS'$magazine->getId(), $request->getLocale());
  109.         $metatags $this->getMetatags($magazine'title''text');
  110.         return $this->render('magazine/magazineDetail.html.twig', [
  111.             'metatags' => $metatags,
  112.             'magazine' => $magazine,
  113.             'correlatedMagazines' => $correlatedMagazines
  114.         ]);
  115.     }
  116.     /**
  117.      * SPONSOR
  118.     */
  119.     #[Route(['it' => '/sponsor',
  120.         'en' => '/en/sponsorship',
  121.         'es' => '/es/patrocinios'], name'app_sponsor_index')]
  122.     public function sponsorIndex(Request $requestEntityManagerInterface $em)
  123.     {
  124.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em, ['it']);
  125.         /** @var MagazineRepository  $magazineRepository */
  126.         $magazineRepository $this->em->getRepository(Magazine::class);
  127.         $magazines $magazineRepository->findMagazine(1'SPONSOR'$request->getLocale());
  128.         $magazinesNumber $magazineRepository->findAllMagazineByType('SPONSOR'$request->getLocale());
  129.         $pagesNumber ceil(count($magazinesNumber) / 12);
  130.         return $this->render('magazine/magazineIndex.html.twig', [
  131.             'magazines' => $magazines,
  132.             'magazineType' => 'sponsor',
  133.             'pages' => $pagesNumber,
  134.             'metatags' => $metatags,
  135.             'hreflangs' => $hreflangs
  136.         ]);
  137.     }
  138.     #[Route(['it' => '/sponsor/{slug}',
  139.         'en' => '/en/sponsorship/{slug}',
  140.         'es' => '/es/patrocinios/{slug}'], name'app_sponsor_detail')]
  141.     public function sponsorDetail(Request $requeststring $slug)
  142.     {
  143.         /** @var MagazineRepository  $magazineRepository */
  144.         $magazineRepository $this->em->getRepository(Magazine::class);
  145.         $magazine $magazineRepository->findOneBy([
  146.             'type' => 'SPONSOR',
  147.             'isEnabled' => true,
  148.             'slug' => $slug,
  149.             'locale' => $request->getLocale()
  150.         ]);
  151.         if (!$magazine) {
  152.             return $this->redirectToRoute('app_sponsor_index');
  153.         }
  154.         $correlatedMagazines $magazineRepository->findCorrelatedMagazine('SPONSOR'$magazine->getId(), $request->getLocale());
  155.         $metatags $this->getMetatags($magazine'title''text');
  156.         return $this->render('magazine/magazineDetail.html.twig', [
  157.             'metatags' => $metatags,
  158.             'magazine' => $magazine,
  159.             'correlatedMagazines' => $correlatedMagazines
  160.         ]);
  161.     }
  162.     /**
  163.      * API GENERALI
  164.      */
  165.     #[Route(path: [ '/magazine/api/v1'
  166.                 ], name'checkMagazineAjax')]
  167.     public function recipeApiIndex(Request $request)
  168.     {
  169.         
  170.         if ($request->getMethod() == 'POST') {
  171.             $type $request->get('type');
  172.             $current_page $request->get('page');
  173.             /** @var MagazineRepository  $magazineRepository */
  174.             $magazineRepository $this->em->getRepository(Magazine::class);
  175.             $magazines $magazineRepository->findMagazine($current_page$type$request->getLocale());
  176.             $magazinesNumber $magazineRepository->findAllMagazineByType($type$request->getLocale());
  177.             $pagesNumber ceil(count($magazinesNumber) / 12);
  178.             $response['html'] = $this->renderView('magazine/_magazineApi.html.twig', [
  179.                 'magazines' => $magazines
  180.             ]);
  181.             $response['pages'] = $pagesNumber;
  182.             $response['current_page'] = $current_page;
  183.             return new JsonResponse($response);
  184.         }
  185.         return new JsonResponse('Page not found'404);
  186.     }
  187. }