src/Classe/Cart.php line 65

Open in your IDE?
  1. <?php
  2. namespace App\Classe;
  3. use Symfony\Component\HttpFoundation\RequestStack;
  4. class Cart
  5. {
  6. private $requestStack;
  7. public function __construct(RequestStack $requestStack)
  8. {
  9. $this->requestStack = $requestStack;
  10. }
  11. public function add($product)
  12. {
  13. // Appeler la session Symfony
  14. $session = $this->requestStack->getSession();
  15. $cart = $this->requestStack->getSession()->get('cart');
  16. // Vérifie si le panier existe déjà dans la session
  17. $cart = $session->get('cart', []); // Récupère le panier ou un tableau vide si le panier n'existe pas
  18. // Vérifie si le produit existe déjà dans le panier
  19. if (isset($cart[$product->getId()])) {
  20. // Si le produit est déjà dans le panier, on incrémente la quantité
  21. $cart[$product->getId()]['qty']++;
  22. } else {
  23. // Si le produit n'existe pas dans le panier, on l'ajoute avec une quantité de 1
  24. if(isset($cart[$product->getId()])) {
  25. $cart[$product->getId()] = [
  26. 'objet' => $product,
  27. 'qty' => $cart[$product->getId()] + 1
  28. ];
  29. }else{
  30. $cart[$product->getId()] = [
  31. 'objet' => $product,
  32. 'qty' => 1
  33. ];
  34. }
  35. }
  36. // Enregistrer le panier mis à jour dans la session
  37. $session->set('cart', $cart);
  38. }
  39. public function decrease($id)
  40. {
  41. $cart = $this->requestStack->getSession()->get('cart');
  42. if($cart[$id]['qty'] > 1) {
  43. $cart[$id]['qty'] = $cart[$id]['qty'] - 1;
  44. }else{
  45. unset($cart[$id]);
  46. }
  47. $this->requestStack->getSession()->set('cart', $cart);
  48. }
  49. public function fullQuantity()
  50. {
  51. $cart = $this->requestStack->getSession()->get('cart', []);
  52. $quantity = 0;
  53. if(!isset($cart)) {
  54. return $quantity;
  55. }
  56. foreach($cart as $product) {
  57. $quantity += $product['qty'];
  58. }
  59. return $quantity;
  60. }
  61. public function getTotalwt()
  62. {
  63. $cart = $this->requestStack->getSession()->get('cart', []);
  64. $price = 0;
  65. if(!isset($cart)) {
  66. return $price;
  67. }
  68. foreach($cart as $product) {
  69. $price += ($product['objet']->getPrice() * $product['qty']);
  70. }
  71. return $price;
  72. }
  73. public function remove()
  74. {
  75. return $this->requestStack->getSession()->remove('cart');
  76. }
  77. public function getCart()
  78. {
  79. // Retourner le panier depuis la session
  80. return $this->requestStack->getSession()->get('cart', []);
  81. }
  82. }