src/Controller/HomepageController.php line 27

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use App\Entity\SiteHome\Slide;
  8. use App\Entity\SiteHome\Imprime;
  9. use App\Entity\SiteHome\SlideSaison;
  10. use App\Entity\SiteHome\CoteBoutique;
  11. use App\Entity\SiteHome\HomeProductVariant;
  12. use App\Entity\SiteHome\HomeMainTaxon;
  13. use App\Entity\SiteSacZipSelection;
  14. use App\Services\InstagramBasicDisplayService;
  15. use Twig\Environment;
  16. use Sylius\Component\Locale\Context\LocaleContextInterface;
  17. use App\Controller\SiteCollectionController;
  18. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  19. class HomepageController extends AbstractController
  20. {
  21.     public function indexAction(
  22.         Request $request,
  23.         LocaleContextInterface $localeContext
  24.     ): Response
  25.     {
  26.         $em $this->get('doctrine')->getManager();
  27.         // Selectionne la combinaison par défaut
  28.         $sacZipSelectionDefault $em->getRepository(SiteSacZipSelection::class)
  29.         ->createQueryBuilder('c')
  30.         ->where('c.default = 1')
  31.         ->getQuery()
  32.         ->getOneOrNullResult();
  33.         // dump($sacZipSelectionDefault);
  34.         // Selectionne les slides
  35.         $slideRepository $em->getRepository(Slide::class);
  36.         $slides $slideRepository->createQueryBuilder('a')
  37.         ->where('a.enabled = 1')
  38.         ->where('a.dateDiffusion < :last')
  39.         ->setParameter('last', new \DateTime('-5 second'))
  40.         ->orderBy('a.position''ASC')
  41.         ->getQuery()
  42.         ->getResult();
  43.         // Selectionne les déclinaisons produits à afficher sur l'accueil
  44.         $homeProductVariantRepository $em->getRepository(HomeProductVariant::class);
  45.         $homeProductsVariants $homeProductVariantRepository->createQueryBuilder('a')
  46.         ->innerJoin(
  47.             'a.productVariant',
  48.             'productVariant',
  49.             'WITH',
  50.             'productVariant.enabled = 1 AND productVariant.onHand >= 5'
  51.         )->orderBy('a.position''ASC')
  52.         ->getQuery()
  53.         ->getResult();
  54.         // Selectionne les "imprimés"
  55.         $imprimeRepository $em->getRepository(Imprime::class);
  56.         $imprimes $imprimeRepository->createQueryBuilder('a')
  57.         ->where('a.enabled = 1')
  58.         ->orderBy('a.position''ASC')
  59.         ->getQuery()
  60.         ->getResult();
  61.         foreach($imprimes as $imprime){
  62.             $imprime->slugLocale SiteCollectionController::CATEGORIES[$localeContext->getLocaleCode()][$imprime->getCollection()->getCategory()];
  63.         }
  64.         // Selectionne les catégories pour "Vous les adorez"
  65.         $homeMainTaxonRepository $em->getRepository(HomeMainTaxon::class);
  66.         $homeTaxons $homeMainTaxonRepository->createQueryBuilder('a')
  67.         ->where('a.enabled = 1')
  68.         ->orderBy('a.position''ASC')
  69.         ->getQuery()
  70.         ->getResult();
  71.         // Selectionne les "slides saisons"
  72.         $saisonRepository $em->getRepository(SlideSaison::class);
  73.         $saisons $saisonRepository->createQueryBuilder('a')
  74.         ->where('a.enabled = 1')
  75.         ->orderBy('a.position''ASC')
  76.         ->getQuery()
  77.         ->getResult();
  78.         // Selectionne les informations sur "Côté boutique"
  79.         $coteBoutiqueRepository $em->getRepository(CoteBoutique::class);
  80.         $coteboutique $coteBoutiqueRepository->createQueryBuilder('a')
  81.         ->where('a.enabled = 1')
  82.         ->getQuery()
  83.         ->getSingleResult();
  84.         return $this->render('index.html.twig', [
  85.             'slides' => $slides,
  86.             'homeProductsVariants' => $homeProductsVariants,
  87.             'imprimes' => $imprimes,
  88.             'homeTaxons' => $homeTaxons,
  89.             'saisons' => $saisons,
  90.             'coteboutique' => $coteboutique,
  91.             'sacZipSelectionDefault' => $sacZipSelectionDefault
  92.         ]);
  93.     }
  94.     public function instagramBasicDisplayAPICallbackAction(InstagramBasicDisplayService $instagramRequest $request)
  95.     {
  96.         $code $request->query->get('code');
  97.         $token $instagram->generateNewToken($code);
  98.         return new Response($token);
  99.     }
  100. }