src/Controller/MagazineController.php line 92

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