Exemplo n.º 1
0
 /**
  * @param CartInterface $cart
  * @param array         $parameters
  *
  * @return CartInterface
  * @throws \Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException
  */
 public function postItem(CartInterface $cart, array $parameters)
 {
     $this->applyWriteTransition($cart);
     $productFamily = $this->productFamilyProvider->getProductFamily($parameters);
     if (null == $productFamily) {
         throw new NotAcceptableHttpException('Impossible to fetch product Family from Request.');
     }
     $cartItemHandler = $this->strategy->getItemHandler($productFamily);
     $item = $cartItemHandler->postItem($cart, $parameters);
     $this->cartManager->addItem($cart, $item);
     $event = $this->eventFactory->getEvent($cart, $item, $parameters);
     $this->dispatcher->dispatch(LeaphlyCartEvents::ITEM_CREATE_SUCCESS, $event);
     $item = $event->getItem();
     $cart = $event->getCart();
     $this->cartManager->updateCart($cart);
     $this->dispatcher->dispatch(LeaphlyCartEvents::ITEM_CREATE_COMPLETED, $this->eventFactory->getEvent($cart, $item));
     return $cart;
 }