src/Controller/MagazineController.php line 59

  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'
  30.     ], name'app_magazine_index')]
  31.     public function magazineIndex(Request $requestEntityManagerInterface $em)
  32.     {
  33.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em, ['it']);
  34.         /** @var MagazineRepository  $magazineRepository */
  35.         $magazineRepository $this->em->getRepository(Magazine::class);
  36.         $magazines $magazineRepository->findMagazine(1'MAGAZINE'$request->getLocale());
  37.         $magazinesNumber $magazineRepository->findAllMagazineByType('MAGAZINE'$request->getLocale());
  38.         $pagesNumber ceil(count($magazinesNumber) / 12);
  39.         return $this->render('magazine/magazineIndex.html.twig', [
  40.             'magazines' => $magazines,
  41.             'magazineType' => 'magazine',
  42.             'pages' => $pagesNumber,
  43.             'metatags' => $metatags,
  44.             'hreflangs' => $hreflangs
  45.         ]);
  46.     }
  47.     #[Route(['it' => '/magazine/{slug}',
  48.     'en' => '/en/magazine/{slug}',
  49. //    'es' => '/es/revista/{slug}'
  50.     ], name'app_magazine_detail')]
  51.     public function magazineDetail(Request $requeststring $slug)
  52.     {
  53.         /** @var MagazineRepository  $magazineRepository */
  54.         $magazineRepository $this->em->getRepository(Magazine::class);
  55.         $magazine $magazineRepository->findOneBy([
  56.             'type' => 'MAGAZINE',
  57.             'isEnabled' => true,
  58.             'slug' => $slug,
  59.             'locale' => $request->getLocale()
  60.         ]);
  61.         if (!$magazine) {
  62.             return $this->redirectToRoute('app_magazine_index');
  63.         }
  64.         $correlatedMagazines $magazineRepository->findCorrelatedMagazine('MAGAZINE',$magazine->getId(), $request->getLocale());
  65.         $metatags $this->getMetatags($magazine'title''text');
  66.         return $this->render('magazine/magazineDetail.html.twig', [
  67.             'metatags' => $metatags,
  68.             'magazine' => $magazine,
  69.             'correlatedMagazines' => $correlatedMagazines
  70.         ]);
  71.     }
  72.     /**
  73.      * NEWS
  74.     */
  75.     #[Route(['it' => '/news',
  76.         'en' => '/en/news',
  77. //        'es' => '/es/noticias'
  78.     ], name'app_news_index')]
  79.     public function newsIndex(Request $requestEntityManagerInterface $em)
  80.     {
  81.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em, ['it']);
  82.         /** @var MagazineRepository  $magazineRepository */
  83.         $magazineRepository $this->em->getRepository(Magazine::class);
  84.         $magazines $magazineRepository->findMagazine(1'NEWS'$request->getLocale());
  85.         $magazinesNumber $magazineRepository->findAllMagazineByType('NEWS'$request->getLocale());
  86.         $pagesNumber ceil(count($magazinesNumber) / 12);
  87.         return $this->render('magazine/magazineIndex.html.twig', [
  88.             'magazines' => $magazines,
  89.             'magazineType' => 'news',
  90.             'pages' => $pagesNumber,
  91.             'metatags' => $metatags,
  92.             'hreflangs' => $hreflangs
  93.         ]);
  94.     }
  95.     #[Route(['it' => '/news/{slug}',
  96.         'en' => '/en/news/{slug}',
  97. //        'es' => '/es/noticias/{slug}'
  98.     ], name'app_news_detail')]
  99.     public function newsDetail(Request $requeststring $slug)
  100.     {
  101.         /** @var MagazineRepository  $magazineRepository */
  102.         $magazineRepository $this->em->getRepository(Magazine::class);
  103.         $magazine $magazineRepository->findOneBy([
  104.             'type' => 'NEWS',
  105.             'isEnabled' => true,
  106.             'slug' => $slug,
  107.             'locale' => $request->getLocale()
  108.         ]);
  109.         if (!$magazine) {
  110.             return $this->redirectToRoute('app_news_index');
  111.         }
  112.         $correlatedMagazines $magazineRepository->findCorrelatedMagazine('NEWS'$magazine->getId(), $request->getLocale());
  113.         $metatags $this->getMetatags($magazine'title''text');
  114.         return $this->render('magazine/magazineDetail.html.twig', [
  115.             'metatags' => $metatags,
  116.             'magazine' => $magazine,
  117.             'correlatedMagazines' => $correlatedMagazines
  118.         ]);
  119.     }
  120.     /**
  121.      * SPONSOR
  122.     */
  123.     #[Route(['it' => '/sponsor',
  124.         'en' => '/en/sponsorship',
  125. //        'es' => '/es/patrocinios'
  126.     ], name'app_sponsor_index')]
  127.     public function sponsorIndex(Request $requestEntityManagerInterface $em)
  128.     {
  129.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em, ['it']);
  130.         /** @var MagazineRepository  $magazineRepository */
  131.         $magazineRepository $this->em->getRepository(Magazine::class);
  132.         $magazines $magazineRepository->findMagazine(1'SPONSOR'$request->getLocale());
  133.         $magazinesNumber $magazineRepository->findAllMagazineByType('SPONSOR'$request->getLocale());
  134.         $pagesNumber ceil(count($magazinesNumber) / 12);
  135.         return $this->render('magazine/magazineIndex.html.twig', [
  136.             'magazines' => $magazines,
  137.             'magazineType' => 'sponsor',
  138.             'pages' => $pagesNumber,
  139.             'metatags' => $metatags,
  140.             'hreflangs' => $hreflangs
  141.         ]);
  142.     }
  143.     #[Route(['it' => '/sponsor/{slug}',
  144.         'en' => '/en/sponsorship/{slug}',
  145. //        'es' => '/es/patrocinios/{slug}'
  146.     ], name'app_sponsor_detail')]
  147.     public function sponsorDetail(Request $requeststring $slug)
  148.     {
  149.         /** @var MagazineRepository  $magazineRepository */
  150.         $magazineRepository $this->em->getRepository(Magazine::class);
  151.         $magazine $magazineRepository->findOneBy([
  152.             'type' => 'SPONSOR',
  153.             'isEnabled' => true,
  154.             'slug' => $slug,
  155.             'locale' => $request->getLocale()
  156.         ]);
  157.         if (!$magazine) {
  158.             return $this->redirectToRoute('app_sponsor_index');
  159.         }
  160.         $correlatedMagazines $magazineRepository->findCorrelatedMagazine('SPONSOR'$magazine->getId(), $request->getLocale());
  161.         $metatags $this->getMetatags($magazine'title''text');
  162.         return $this->render('magazine/magazineDetail.html.twig', [
  163.             'metatags' => $metatags,
  164.             'magazine' => $magazine,
  165.             'correlatedMagazines' => $correlatedMagazines
  166.         ]);
  167.     }
  168.     /**
  169.      * API GENERALI
  170.      */
  171.     #[Route(path: [ '/magazine/api/v1'
  172.                 ], name'checkMagazineAjax')]
  173.     public function recipeApiIndex(Request $request)
  174.     {
  175.         
  176.         if ($request->getMethod() == 'POST') {
  177.             $type $request->get('type');
  178.             $current_page $request->get('page');
  179.             /** @var MagazineRepository  $magazineRepository */
  180.             $magazineRepository $this->em->getRepository(Magazine::class);
  181.             $magazines $magazineRepository->findMagazine($current_page$type$request->getLocale());
  182.             $magazinesNumber $magazineRepository->findAllMagazineByType($type$request->getLocale());
  183.             $pagesNumber ceil(count($magazinesNumber) / 12);
  184.             $response['html'] = $this->renderView('magazine/_magazineApi.html.twig', [
  185.                 'magazines' => $magazines
  186.             ]);
  187.             $response['pages'] = $pagesNumber;
  188.             $response['current_page'] = $current_page;
  189.             return new JsonResponse($response);
  190.         }
  191.         return new JsonResponse('Page not found'404);
  192.     }
  193. }