<?php
namespace App\Controller;
use App\Entity\Pneu;
use App\Repository\PneuRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/panier")
*/
class CartController extends AbstractController
{
/**
* @Route("/", name="cart_index")
*/
public function index(SessionInterface $session, PneuRepository $pneuRepository)
{
$panier = $session->get('panier', []);
// On initialise des variables
$data = [];
$total = 0;
foreach($panier as $id => $quantity){
$pneu = $pneuRepository->find($id);
$data[] = [
'pneu' => $pneu,
'quantity' => $quantity
];
$total += $pneu->getPrix() * $quantity;
}
return $this->render('cart/index.html.twig', compact('data', 'total'));
}
/**
* @Route("/add/{id}", name="cart_add")
*/
public function add(Pneu $pneu, SessionInterface $session)
{
//On récupère l'id du pneu
$id = $pneu->getId();
// On récupère le panier existant
$panier = $session->get('panier', []);
// On ajoute le pneu dans le panier s'il n'y est pas encore
// Sinon on incrémente sa quantité
if(empty($panier[$id])){
$panier[$id] = 1;
}else{
$panier[$id]++;
}
$session->set('panier', $panier);
//On redirige vers la page du panier
return $this->redirectToRoute('cart_index');
}
/**
* @Route("/remove/{id}", name="cart_remove")
*/
public function remove(Pneu $pneu, SessionInterface $session)
{
//On récupère l'id du pneu
$id = $pneu->getId();
// On récupère le panier existant
$panier = $session->get('panier', []);
// On retire le pneu du panier s'il n'y a qu'1 exemplaire
// Sinon on décrémente sa quantité
if(!empty($panier[$id])){
if($panier[$id] > 1){
$panier[$id]--;
}else{
unset($panier[$id]);
}
}
$session->set('panier', $panier);
//On redirige vers la page du panier
return $this->redirectToRoute('cart_index');
}
/**
* @Route("/delete/{id}", name="cart_delete")
*/
public function delete(Pneu $pneu, SessionInterface $session)
{
//On récupère l'id du pneu
$id = $pneu->getId();
// On récupère le panier existant
$panier = $session->get('panier', []);
if(!empty($panier[$id])){
unset($panier[$id]);
}
$session->set('panier', $panier);
//On redirige vers la page du panier
return $this->redirectToRoute('cart_index');
}
/**
* @Route("/empty", name="cart_empty")
*/
public function empty(SessionInterface $session)
{
$session->remove('panier');
return $this->redirectToRoute('cart_index');
}
}