<?php
namespace App\Controller\Ecommerce;
use App\Repository\ArticleOrderOutOfStockRepository;
use App\Repository\BannerRepository;
use App\Repository\NewArticleRepository;
use App\Repository\RequestModificationRepository;
use App\Repository\RequestModificationStatusRepository;
use App\Repository\UserEstablishmentRepository;
use App\Repository\UsersRepository;
use App\Repository\OrdersRepository;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
use DateTime;
/**
* @Route("/ecommerce", name="ecommerce_")
*/
class EcommerceHomeController extends AbstractController
{
private $usersRepository;
private $requestModificationRepository;
public function __construct(
UsersRepository $usersRepository,
RequestModificationRepository $requestModificationRepository,
RequestModificationStatusRepository $requestModificationStatusRepository,
ArticleOrderOutOfStockRepository $articleOrderOutOfStockRepository,
OrdersRepository $ordersRepository,
BannerRepository $bannerRepository,
UserEstablishmentRepository $userEstablishmentRepository,
EntityManagerInterface $entityManager,
NewArticleRepository $newArticleRepository
) {
$this->usersRepository = $usersRepository;
$this->requestModificationRepository = $requestModificationRepository;
$this->requestModificationStatusRepository = $requestModificationStatusRepository;
$this->articleOrderOutOfStockRepository = $articleOrderOutOfStockRepository;
$this->ordersRepository = $ordersRepository;
$this->bannerRepository = $bannerRepository;
$this->userEstablishmentRepository = $userEstablishmentRepository;
$this->entityManager = $entityManager;
$this->newArticleRepository = $newArticleRepository;
}
/**
* @Route("/", name="index")
*/
public function index(): Response
{
return $this->render('ecommerce/index.html.twig', [
'banners' => $this->bannerRepository->findBy(['deleted' => false, 'visible' => true], ['position' => "ASC"]),
'userEstablishments' => $this->userEstablishmentRepository->findBy(['user' => $this->getUser(),'deleted' => false]),
'newArticles' => $this->newArticleRepository->findCurrentNewArticles()
]);
}
/**
* @Route("/connected-to/{id}", name="connected_to")
*/
public function connectedTo($id): Response
{
$userEstablishment = $this->userEstablishmentRepository->findOneBy(['user' => $this->getUser(), 'establishment' => $id, 'deleted' => false]);
if($userEstablishment !== null){
$user = $this->getUser()->setConnectedAt($userEstablishment->getEstablishment());
$this->entityManager->persist($user);
$this->entityManager->flush();
}
return $this->redirectToRoute('ecommerce_index');
}
/**
* @Route("/change-langage/{params}", name="change_language")
*/
public function changeLangage($params, RequestStack $requestStack, SessionInterface $session): Response
{
// Vérifiez que le paramètre est une langue valide
$validLocales = ['en', 'fr', 'nl'];
if (!in_array($params, $validLocales)) {
$params = 'en'; // Définir une langue par défaut si la langue n'est pas valide
}
$session->set('_locale', $params);
// Obtenir la requête actuelle
$request = $requestStack->getCurrentRequest();
$previousUrl = $request->headers->get('referer');
return $this->redirectToRoute('ecommerce_index');
// Construire l'URL de redirection avec la langue
$urlComponents = parse_url($previousUrl);
parse_str($urlComponents['query'] ?? '', $query);
$query['_locale'] = $params;
$urlComponents['query'] = http_build_query($query);
$newUrl = $urlComponents['scheme'] . '://' . $urlComponents['host'] . ($urlComponents['path'] ?? '') . '?' . $urlComponents['query'];
return new RedirectResponse($newUrl);
}
}