src/Controller/DefaultController.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Search\SearchManager;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. class DefaultController extends AbstractController
  10. {
  11.     /**
  12.      * @Route("/", name="homepage")
  13.      */
  14.     public function index(): Response
  15.     {
  16.         if ($this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_ADMIN_ADV')) {
  17.             return $this->redirectToRoute('admin_dashboard');
  18.         }
  19.         if ($this->isGranted('ROLE_RETAILER')) {
  20.             return $this->redirectToRoute('retailer_dashboard');
  21.         }
  22.         return $this->redirectToRoute('app_login');
  23.     }
  24.     /**
  25.      * @Route("/switch-language/{locale}", name="switch_language"): Response
  26.      */
  27.     public function switchLanguage(string $localeRequest $requestEntityManagerInterface $entityManager): Response
  28.     {
  29.         $request->getSession()->set('_locale'$locale);
  30.         if (null !== $this->getUser()) {
  31.             $this->getUser()->setLocale($locale);
  32.             $entityManager->flush();
  33.         }
  34.         return $this->redirect($request->headers->get('referer') ?? $request->query->get('from_page') ?? '/');
  35.     }
  36.     /**
  37.      * @Route("/search", name="search")
  38.      */
  39.     public function search(Request $requestSearchManager $manager): Response
  40.     {
  41.         if (false === $this->isGranted('ROLE_ADMIN') && false === $this->isGranted('ROLE_RETAILER')) {
  42.             return $this->redirectToRoute('app_login');
  43.         }
  44.         if (null === ($searchTerm $request->query->get('q'))) {
  45.             return $this->redirect($request->headers->get('referer') ?? $request->query->get('from_page') ?? '/');
  46.         }
  47.         $paginatedSearchResults $manager->searchTerm($searchTerm$request->query->all());
  48.         return $this->render('search/index.html.twig', [
  49.             'results' => $paginatedSearchResults->getPaginationContainer(),
  50.             'boundaries_info' => $paginatedSearchResults->getPaginationBoundaries(),
  51.             'info' => $paginatedSearchResults,
  52.         ]);
  53.     }
  54. }