Ejemplo n.º 1
0
 /**
  * "Success" form handler
  *
  * @param Cart $entity
  */
 protected function onSuccess(Cart $entity)
 {
     $count = 0;
     /** @var CartItem $item */
     foreach ($entity->getCartItems() as $item) {
         $item->setCart($entity);
         ++$count;
     }
     $entity->setItemsCount($count);
     if (null === $entity->getOrganization()) {
         $entity->setOrganization($this->organization);
     }
     if ($entity->getShippingAddress() instanceof AbstractAddress && null === $entity->getShippingAddress()->getOrganization()) {
         $entity->getShippingAddress()->setOrganization($this->organization);
     }
     if ($entity->getBillingAddress() instanceof AbstractAddress && null === $entity->getBillingAddress()->getOrganization()) {
         $entity->getBillingAddress()->setOrganization($this->organization);
     }
     $this->manager->persist($entity);
     $this->manager->flush();
 }
Ejemplo n.º 2
0
 /**
  * @param Cart $cart
  *
  * @return CartStrategy
  */
 protected function updateCartItems(Cart $cart)
 {
     foreach ($cart->getCartItems() as $cartItem) {
         $cartItem->setCart($cart);
     }
     return $this;
 }
Ejemplo n.º 3
0
 /**
  * @param Cart            $cart
  * @param ArrayCollection $cartItems imported items
  *
  * @return CartStrategy
  */
 protected function updateCartItems(Cart $cart, ArrayCollection $cartItems)
 {
     $importedOriginIds = $cartItems->map(function ($item) {
         return $item->getOriginId();
     })->toArray();
     // insert new and update existing items
     /** $item - imported cart item */
     foreach ($cartItems as $item) {
         $originId = $item->getOriginId();
         $existingItem = $cart->getCartItems()->filter(function ($item) use($originId) {
             return $item->getOriginId() == $originId;
         })->first();
         if ($existingItem) {
             $this->strategyHelper->importEntity($existingItem, $item, ['id', 'cart']);
             $item = $existingItem;
         }
         if (!$item->getCart()) {
             $item->setCart($cart);
         }
         if (!$cart->getCartItems()->contains($item)) {
             $cart->getCartItems()->add($item);
         }
     }
     // delete cart items that not exists in remote cart
     $deletedCartItems = $cart->getCartItems()->filter(function ($item) use($importedOriginIds) {
         return !in_array($item->getOriginId(), $importedOriginIds);
     });
     foreach ($deletedCartItems as $item) {
         $cart->getCartItems()->removeElement($item);
     }
     return $this;
 }
Ejemplo n.º 4
0
 /**
  * @param Cart $cart
  *
  * @return CartStrategy
  */
 protected function updateCartItems(Cart $cart)
 {
     foreach ($cart->getCartItems() as $cartItem) {
         $cartItem->setOwner($cart->getOrganization());
         $cartItem->setCart($cart);
     }
     return $this;
 }
Ejemplo n.º 5
0
 /**
  * @param ObjectManager $om
  * @param Order         $order
  * @param Cart          $cart
  *
  * @return OrderItem[]
  */
 protected function generateOrderItem(ObjectManager $om, Order $order, Cart $cart)
 {
     $cartItems = $cart->getCartItems();
     $orderItems = array();
     foreach ($cartItems as $cartItem) {
         $orderItem = new OrderItem();
         $orderItem->setOriginId($cartItem->getOriginId());
         $orderItem->setOrder($order);
         $orderItem->setTaxAmount($cartItem->getTaxAmount());
         $orderItem->setTaxPercent($cartItem->getTaxPercent());
         $orderItem->setRowTotal($cartItem->getRowTotal());
         $orderItem->setProductType($cartItem->getProductType());
         $orderItem->setIsVirtual((bool) $cartItem->getIsVirtual());
         $orderItem->setQty($cartItem->getQty());
         $orderItem->setSku($cartItem->getSku());
         $orderItem->setPrice($cartItem->getPrice());
         $orderItem->setOriginalPrice($cartItem->getPrice());
         $orderItem->setName($cartItem->getName());
         $orderItems[] = $orderItem;
         $om->persist($orderItem);
     }
     $order->setItems($orderItems);
     $om->persist($order);
     return $orderItems;
 }