src/Controller/DefaultController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\Helper\HelperController;
  4. use App\Data\SearchItem;
  5. use App\DataForm\SearchProfileForm;
  6. use App\Event\BookingInitiatedEvent;
  7. use App\Repository\Activities\BookingRepository;
  8. use App\Repository\Auth\UserRepository;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Psr\Log\LoggerInterface;
  11. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  17. class DefaultController extends HelperController
  18. {
  19.     /**
  20.      * @Route("/", name="homepage")
  21.      * @param Request $request
  22.      * @param UserRepository $userRepository
  23.      * @param BookingRepository $bookingRepository
  24.      * @param AuthorizationCheckerInterface $checker
  25.      * @param EntityManagerInterface $manager
  26.      * @param EventDispatcherInterface $dispatcher
  27.      * @param LoggerInterface $logger
  28.      * @return Response
  29.      */
  30.     public function index(Request $request,
  31.                           UserRepository $userRepository,
  32.                           BookingRepository $bookingRepository,
  33.                           AuthorizationCheckerInterface $checker,
  34.                           EntityManagerInterface $managerEventDispatcherInterface $dispatcher,
  35.                           LoggerInterface $logger)
  36.     {
  37.         if ($checker->isGranted('ROLE_ADMIN')) {
  38.             return $this->redirectToRoute('admin_dashboard');
  39.         }
  40.         if ($checker->isGranted('ROLE_PARENT')) {
  41.             $user $this->getUser();
  42.             if (!$user->isIsPasswordUpdated() && $user->getMatricule()) {
  43.                 return $this->redirectToRoute('auth_password_update');
  44.             }
  45.         }
  46.         $data = new SearchItem();
  47.         $form $this->createForm(SearchProfileForm::class, $data);
  48.         $form->handleRequest($request);
  49.         [$users$page$total] = $userRepository->findSearch($data$request);
  50.         [$min$max] = $userRepository->findMinMax($data);
  51.         if ($request->get('ajax')) {
  52.             $logger->info('Here come the ajax request Valeur min ' $data->min);
  53.             return new JsonResponse([
  54.                 'content' => $this->renderView('public/clients/_list.html.twig', ['users' => $users]),
  55.                 'sorting' => $this->renderView('public/clients/_sorting.html.twig', [
  56.                     'numbers' => $users->getTotalItemCount() < ($total $page) ? $users->getTotalItemCount() : ($total $page),
  57.                     'total' => $users->getTotalItemCount(),
  58.                     'pages' => ceil($users->getTotalItemCount() / $users->getItemNumberPerPage()),
  59.                     'page' => $page,
  60.                     'users' => $users
  61.                 ]),
  62.                 'pagination' => $this->renderView('public/clients/_pagination.html.twig', [
  63.                     'users' => $users,
  64.                     'total' => $users->getTotalItemCount(),
  65.                 ]),
  66.                 'page' => $page,
  67.                 'pages' => ceil($users->getTotalItemCount() / $users->getItemNumberPerPage()),
  68.                 'min' => $min,
  69.                 'max' => $max,
  70.                 'total' => $users->getTotalItemCount(),
  71.                 'numbers' => $total
  72.             ]);
  73.         }
  74.         if ($this->getUser() && $checker->isGranted('ROLE_PARENT')) {
  75.             $bookings $bookingRepository->findBy([
  76.                 'session' => $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'],
  77.                 'parent' => null
  78.             ]);
  79.             if (count($bookings) !== 0) {
  80.                 foreach ($bookings as $booking) {
  81.                     $booking->setParent($this->getUser())->setSession(null);
  82.                     $dispatcher->dispatch(new BookingInitiatedEvent($booking));
  83.                 }
  84.                 $manager->flush();
  85.             }
  86.         }
  87.         return $this->render('public/home.html.twig', [
  88.             'users' => $users,
  89.             'form' => $form->createView(),
  90.             'min' => $min,
  91.             'max' => $max,
  92.             'total' => $users->getTotalItemCount(),
  93.             'numbers' => $total $page,
  94.             'page' => $page,
  95.             'pages' => ceil($users->getTotalItemCount() / $users->getItemNumberPerPage())
  96.         ]);
  97.     }
  98. }