/** * "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(); }
/** * @param Cart $cart * * @return CartStrategy */ protected function updateCartItems(Cart $cart) { foreach ($cart->getCartItems() as $cartItem) { $cartItem->setCart($cart); } return $this; }
/** * @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; }
/** * @param Cart $cart * * @return CartStrategy */ protected function updateCartItems(Cart $cart) { foreach ($cart->getCartItems() as $cartItem) { $cartItem->setOwner($cart->getOrganization()); $cartItem->setCart($cart); } return $this; }
/** * @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; }