<?php
namespace App\Service;
use App\Entity\Menu;
use App\Entity\Produit;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class CartService {
private RequestStack $requestStack;
private EntityManagerInterface $em;
public function __construct(RequestStack $requestStack, EntityManagerInterface $em){
$this->requestStack =$requestStack;
$this->em=$em;
}
public function addToCart(string $id):void{
$cart=$this->getSession()->get('cart',[]);
if(!empty($cart[$id])){
$cart[$id]++;
}
else {
$cart[$id]=1;
}
$this->getSession()->set('cart',$cart);
}
public function decrease(string $id)
{
$cart=$this->getSession()->get('cart',[]);
if($cart[$id]>1){
$cart[$id]--;
}else{
unset($cart[$id]);
}
$this->getSession()->set('cart', $cart);
}
public function removeToCart(string $id)
{
$cart=$this->requestStack->getSession()->get('cart',[]);
unset($cart[$id]);
return $this->getSession()->set('cart', $cart);
}
public function removeCartAll()
{
return $this->getSession()->remove('cart');
}
public function getTotal() : array
{
$cart = $this->getSession()->get('cart');
$cartData = [];
foreach ($cart as $id => $quantite){
$produit = $this->em->getRepository(Produit::class)->findOneBy(['id'=> $id]);
if(!$produit){
//supprimer le produit puis sortir de la boucle
}
$cartData[]=[
'produit'=>$produit,
'quantite'=> $quantite
];
}
return $cartData;
}
private function getSession():SessionInterface
{
return $this->requestStack->getSession();
}
}