src/Controller/SessionController.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Session;
  4. use App\Form\SessionType;
  5. use App\Repository\SessionRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. #[Route('/session')]
  11. class SessionController extends AbstractController
  12. {
  13.     #[Route('/'name'app_session_index')]
  14.     public function index(SessionRepository $sessionRepository): Response
  15.     {
  16.         return $this->render('session/index.html.twig', [
  17.             'sessions' => $sessionRepository->findAll(),
  18.         ]);
  19.     }
  20.     #[Route('/new'name'app_session_new'methods: ['GET''POST'])]
  21.     public function new(Request $requestSessionRepository $sessionRepository): Response {
  22.         $session = new Session();
  23.         $form $this->createForm(SessionType::class, $session);
  24.         $form->handleRequest($request);
  25.         if ($form->isSubmitted() && $form->isValid()) {
  26.             $sessionRepository->save($sessiontrue);
  27.             return $this->redirectToRoute('app_session_index', [], Response::HTTP_SEE_OTHER);
  28.         }
  29.         return $this->renderForm('session/new.html.twig', [
  30.             'session' => $session,
  31.             'form' => $form,
  32.         ]);
  33.     }
  34.     #[Route('/{id}'name:'app_session_delete'methods: ['POST'] )]
  35.     public function delete(Request $requestSession $sessionSessionRepository $sessionRepository): Response {
  36.         if ($this->isCsrfTokenValid('delete'.$session->getId(), $request->request->get('_token'))) {
  37.             $sessionRepository->remove($sessiontrue);
  38.         }
  39.         return $this->redirectToRoute('app_session_index', [], Response::HTTP_SEE_OTHER);
  40.     }
  41.     #[Route('/{id}'name'app_session_show'methods: ['GET'])]
  42.     public function show(Session $session): Response {
  43.         $sortedProducts = [];
  44.         $totalPrice 0;
  45.         foreach ($session->getRecipes() as $recipe) {
  46.             foreach ($recipe->getProducts() as $product) {
  47.                 $totalPrice += $product->getPrice();
  48.                 $sortedProducts[$product->getStoreArea()->getName()][] = $product->getName();
  49.             }
  50.         }
  51.         return $this->render('session/show.html.twig', [
  52.             'session' => $session,
  53.             'totalPrice' => $totalPrice,
  54.             'sortedProducts' => $sortedProducts,
  55.         ]);
  56.     }
  57. }