src/Controller/AccueilController.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Bloc\Bloc;
  4. use App\Entity\Contenu\PageAccueil;
  5. use App\Repository\Contenu\LienBlocPageAccueilRepository;
  6. use App\Repository\Contenu\LienDiaporamaPageAccueilRepository;
  7. use App\Repository\Contenu\PageAccueilRepository;
  8. use FOS\UserBundle\Model\UserInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  13. class AccueilController extends AbstractController
  14. {
  15.     /**
  16.      * @Route("/", name="accueil.index", defaults={"seoEntity" = "Contenu\PageAccueil", "id" = PageAccueil::PAGE_ACCUEIL})
  17.      * @ParamConverter("pageAccueil", class="App:Contenu\PageAccueil", options={"repository_method"="findOneById", "map_method_signature" = true})
  18.      * @return Response
  19.      */
  20.     public function index(
  21.         PageAccueil $pageAccueil,
  22.         PageAccueilRepository $pageAccueilRepository,
  23.         LienBlocPageAccueilRepository $lienBlocPageAccueilRepository,
  24.         LienDiaporamaPageAccueilRepository $lienDiaporamaPageAccueilRepository
  25.     ): Response
  26.     {
  27.         $user $this->getUser();
  28.         if (getenv('APP_SITE_SLUG') != 'prestatime' && (!is_object($user) || !$user instanceof UserInterface)) {
  29.             $pageAccueil $pageAccueilRepository->findOneById(PageAccueil::PAGE_ACCUEIL_GUEST);
  30.         }
  31.         // Cette méthode a été crée pour optimiser le nombre de requêtes sur la homepage
  32.         $lienBlocPageAccueils $lienBlocPageAccueilRepository->findLienBlocPageAccueils(
  33.             true,
  34.             $pageAccueil->getId(),
  35.             ['LBPA.position' => 'ASC']
  36.         );
  37.         // Cette méthode a été crée pour optimiser le nombre de requêtes sur la homepage
  38.         $lienDiaporamaPageAccueils $lienDiaporamaPageAccueilRepository->findLienDiaporamaPageAccueils(
  39.             true,
  40.             $pageAccueil->getId(),
  41.             ['LDPA.position' => 'ASC']
  42.         );
  43.         return $this->render('accueil/detail.html.twig', [
  44.             'lienDiaporamaPageAccueils' => $lienDiaporamaPageAccueils,
  45.             'lienBlocPageAccueils'      => $lienBlocPageAccueils,
  46.             'page'                      => $pageAccueil
  47.         ]);
  48.     }
  49.     /**
  50.      * @Route("/feed/promotionfeed", name="accueil.promotion", defaults={"id" = PageAccueil::PAGE_ACCUEIL, "_format"="xml"})
  51.      * @ParamConverter("pageAccueil", class="App:Contenu\PageAccueil", options={"repository_method"="findOneById", "map_method_signature" = true})
  52.      * @return Response
  53.      */
  54.     public function promotion(
  55.         PageAccueil $pageAccueil,
  56.         PageAccueilRepository $pageAccueilRepository,
  57.         LienBlocPageAccueilRepository $lienBlocPageAccueilRepository,
  58.         LienDiaporamaPageAccueilRepository $lienDiaporamaPageAccueilRepository
  59.     ): Response
  60.     {
  61.         // Cette méthode a été crée pour optimiser le nombre de requêtes sur la homepage
  62.         $lienBlocPageAccueils $lienBlocPageAccueilRepository->findLienBlocPageAccueils(
  63.             true,
  64.             $pageAccueil->getId(),
  65.             ['LBPA.position' => 'ASC']
  66.         );
  67.         $produits = [];
  68.         foreach ($lienBlocPageAccueils as $lienBlocPageAccueil) {
  69.             $bloc $lienBlocPageAccueil->getBloc();
  70.             if (!$bloc->getType() == Bloc::TYPE_PRODUITS) {
  71.                 continue;
  72.             }
  73.             if (count($produits) >= 6) {
  74.                 break;
  75.             }
  76.             if (!is_null($bloc->getCategorie())) {
  77.                 $items $bloc->produits;
  78.             } else {
  79.                 $items = [];
  80.                 foreach ($bloc->getLienBlocLigneProduitsVisibles() as $lienBlocLigneProduit) {
  81.                     $items[] = $lienBlocLigneProduit->getProduit();
  82.                 }
  83.             }
  84.             $cpt 0;
  85.             foreach ($items as $item) {
  86.                 if ($cpt && true === $item->getVisible() && true === $item->getActive()) {
  87.                     $produits[] = $item;
  88.                     $cpt++;
  89.                 }
  90.             }
  91.         }
  92.         $content $this->renderView('widget/rss/promotion.xml.twig', [
  93.             'produits' => $produits
  94.         ]);
  95.         $response = new Response();
  96.         $response->headers->set("Content-type""text/xml");
  97.         $response->setContent($content);
  98.         return $response;
  99.     }
  100. }