src/Controller/Ecommerce/EcommerceHomeController.php line 59

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Ecommerce;
  3. use App\Repository\ArticleOrderOutOfStockRepository;
  4. use App\Repository\BannerRepository;
  5. use App\Repository\NewArticleRepository;
  6. use App\Repository\RequestModificationRepository;
  7. use App\Repository\RequestModificationStatusRepository;
  8. use App\Repository\UserEstablishmentRepository;
  9. use App\Repository\UsersRepository;
  10. use App\Repository\OrdersRepository;
  11. use Doctrine\ORM\EntityManager;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\RedirectResponse;
  16. use Symfony\Component\HttpFoundation\RequestStack;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. use DateTime;
  22. /**
  23.  * @Route("/ecommerce", name="ecommerce_")
  24.  */
  25. class EcommerceHomeController extends AbstractController
  26. {
  27.     private $usersRepository;
  28.     private $requestModificationRepository;
  29.     public function __construct(
  30.         UsersRepository $usersRepository,
  31.         RequestModificationRepository $requestModificationRepository,
  32.         RequestModificationStatusRepository $requestModificationStatusRepository,
  33.         ArticleOrderOutOfStockRepository $articleOrderOutOfStockRepository,
  34.         OrdersRepository $ordersRepository,
  35.         BannerRepository $bannerRepository,
  36.         UserEstablishmentRepository $userEstablishmentRepository,
  37.         EntityManagerInterface $entityManager,
  38.         NewArticleRepository $newArticleRepository
  39.     ) {
  40.         $this->usersRepository $usersRepository;
  41.         $this->requestModificationRepository $requestModificationRepository;
  42.         $this->requestModificationStatusRepository $requestModificationStatusRepository;
  43.         $this->articleOrderOutOfStockRepository $articleOrderOutOfStockRepository;
  44.         $this->ordersRepository $ordersRepository;
  45.         $this->bannerRepository $bannerRepository;
  46.         $this->userEstablishmentRepository $userEstablishmentRepository;
  47.         $this->entityManager $entityManager;
  48.         $this->newArticleRepository $newArticleRepository;
  49.     }
  50.     /**
  51.      * @Route("/", name="index")
  52.      */
  53.     public function index(): Response
  54.     {
  55.         return $this->render('ecommerce/index.html.twig', [
  56.             'banners' => $this->bannerRepository->findBy(['deleted' => false'visible' => true], ['position' => "ASC"]),
  57.             'userEstablishments' => $this->userEstablishmentRepository->findBy(['user' => $this->getUser(),'deleted' => false]),
  58.             'newArticles' => $this->newArticleRepository->findCurrentNewArticles()
  59.         ]);
  60.     }
  61.     /**
  62.      * @Route("/connected-to/{id}", name="connected_to")
  63.      */
  64.     public function connectedTo($id): Response
  65.     {
  66.         $userEstablishment $this->userEstablishmentRepository->findOneBy(['user' => $this->getUser(), 'establishment' => $id'deleted' => false]);
  67.         if($userEstablishment !== null){
  68.             $user $this->getUser()->setConnectedAt($userEstablishment->getEstablishment());
  69.             $this->entityManager->persist($user);
  70.             $this->entityManager->flush();
  71.         }
  72.         return $this->redirectToRoute('ecommerce_index');
  73.     }
  74.     /**
  75.      * @Route("/change-langage/{params}", name="change_language")
  76.      */
  77.     public function changeLangage($paramsRequestStack $requestStackSessionInterface $session): Response
  78.     {
  79.         // Vérifiez que le paramètre est une langue valide
  80.         $validLocales = ['en''fr''nl'];
  81.         if (!in_array($params$validLocales)) {
  82.             $params 'en'// Définir une langue par défaut si la langue n'est pas valide
  83.         }
  84.         $session->set('_locale'$params);
  85.         // Obtenir la requête actuelle
  86.         $request $requestStack->getCurrentRequest();
  87.         $previousUrl $request->headers->get('referer');
  88.         return $this->redirectToRoute('ecommerce_index');
  89.         // Construire l'URL de redirection avec la langue
  90.         $urlComponents parse_url($previousUrl);
  91.         parse_str($urlComponents['query'] ?? ''$query);
  92.         $query['_locale'] = $params;
  93.         $urlComponents['query'] = http_build_query($query);
  94.         $newUrl $urlComponents['scheme'] . '://' $urlComponents['host'] . ($urlComponents['path'] ?? '') . '?' $urlComponents['query'];
  95.         return new RedirectResponse($newUrl);
  96.     }
  97. }