diff --git a/core/lib/Thelia/Action/Cart.php b/core/lib/Thelia/Action/Cart.php index c06ade935..49574c11c 100755 --- a/core/lib/Thelia/Action/Cart.php +++ b/core/lib/Thelia/Action/Cart.php @@ -91,4 +91,59 @@ class Cart implements EventSubscriberInterface "action.modifyArticle" => array("modifyArticle", 128), ); } + + public function getCart(Request $request) + { + if ($request->cookies->has("thelia_cart")) { + //le cookie de panier existe, on le récupère + $cookie = $request->cookies->get("thelia_cart"); + + $cart = CartQuery::create()->findOneByToken($cookie); + + if ($cart) { + //le panier existe en base + $customer = $request->getSession()->getCustomerUser(); + + if ($customer) { + if($cart->getCustomerId() != $customer->getId()) { + //le customer du panier n'est pas le mm que celui connecté, il faut cloner le panier sans le customer_id + $cart = $cart->duplicate($customer); + } + } else { + if ($cart->getCustomerId() != null) { + //il faut dupliquer le panier sans le customer_id + $cart = $cart->duplicate(); + } + } + + } else { + $cart = $this->createCart(); + } + } else { + //le cookie de panier n'existe pas, il va falloir le créer et faire un enregistrement en base. + $cart = $this->createCart(); + } + + return $cart; + } + + public function createCart() + { + + } + + + public function generateCookie() + { + $id = uniqid('', true); + + setcookie("thelia_cart", $id, time()); + + return $id; + } + + public function addItem() + { + + } } diff --git a/core/lib/Thelia/Model/Cart.php b/core/lib/Thelia/Model/Cart.php index f7df0776f..cf9b083c5 100644 --- a/core/lib/Thelia/Model/Cart.php +++ b/core/lib/Thelia/Model/Cart.php @@ -7,54 +7,14 @@ use Thelia\Model\Base\Cart as BaseCart; class Cart extends BaseCart { - public function getCart(Request $request) - { - if ($request->cookies->has("thelia_cart")) { - //le cookie de panier existe, on le récupère - $cookie = $request->cookies->get("thelia_cart"); - - $cart = CartQuery::create()->findOneByToken($cookie); - - if ($cart) { - //le panier existe en base - $customer = $request->getSession()->getCustomerUser(); - - if ($customer) { - if($cart->getCustomerId() != $customer->getId()) { - //le customer du panier n'est pas le mm que celui connecté, il faut cloner le panier sans le customer_id - $cart = $this->duplicate($customer); - } - } else { - if ($cart->getCustomerId() != null) { - //il faut dupliquer le panier sans le customer_id - $cart = $this->duplicate(); - } - } - - } else { - $cart = $this->createCart(); - } - } else { - //le cookie de panier n'existe pas, il va falloir le créer et faire un enregistrement en base. - $cart = $this->createCart(); - } - - return $cart; - } - - public function createCart() - { - - } - - public function duplicate(Customer $customer = null) + public function duplicate($token, Customer $customer = null) { $cartItems = $this->getCartItems(); $cart = new Cart(); $cart->setAddressDeliveryId($this->getAddressDeliveryId()); $cart->setAddressInvoiceId($this->getAddressInvoiceId()); - $cart->setToken($this->generateCookie()); + $cart->setToken($token); if ($customer){ $cart->setCustomer($customer); @@ -73,18 +33,4 @@ class Cart extends BaseCart return $cart; } - - public function generateCookie() - { - $id = uniqid('', true); - - setcookie("thelia_cart", $id, time()); - - return $id; - } - - public function addItem() - { - - } }