| @@ 77-100 (lines=24) @@ | ||
| 74 | /** |
|
| 75 | * @param PutOptionBasedConfigurableItemToCart $putConfigurableItemToCart |
|
| 76 | */ |
|
| 77 | public function handle(PutOptionBasedConfigurableItemToCart $putConfigurableItemToCart) |
|
| 78 | { |
|
| 79 | /** @var OrderInterface $cart */ |
|
| 80 | $cart = $this->cartRepository->findOneBy(['tokenValue' => $putConfigurableItemToCart->orderToken()]); |
|
| 81 | ||
| 82 | Assert::notNull($cart, 'Cart has not been found'); |
|
| 83 | ||
| 84 | /** @var ProductInterface $product */ |
|
| 85 | $product = $this->productRepository->findOneByCode($putConfigurableItemToCart->product()); |
|
| 86 | ||
| 87 | Assert::notNull($product, 'Product has not been found'); |
|
| 88 | ||
| 89 | $productVariant = $this->getVariant($putConfigurableItemToCart->options(), $product); |
|
| 90 | ||
| 91 | /** @var OrderItemInterface $cartItem */ |
|
| 92 | $cartItem = $this->cartItemFactory->createForCart($cart); |
|
| 93 | $cartItem->setVariant($productVariant); |
|
| 94 | $this->orderItemModifier->modify($cartItem, $putConfigurableItemToCart->quantity()); |
|
| 95 | ||
| 96 | $cart->addItem($cartItem); |
|
| 97 | ||
| 98 | $this->orderProcessor->process($cart); |
|
| 99 | ||
| 100 | $this->manager->persist($cart); |
|
| 101 | } |
|
| 102 | ||
| 103 | /** |
|
| @@ 75-96 (lines=22) @@ | ||
| 72 | /** |
|
| 73 | * @param PutVariantBasedConfigurableItemToCart $putConfigurableItemToCart |
|
| 74 | */ |
|
| 75 | public function handle(PutVariantBasedConfigurableItemToCart $putConfigurableItemToCart) |
|
| 76 | { |
|
| 77 | $cart = $this->cartRepository->findOneBy(['tokenValue' => $putConfigurableItemToCart->orderToken()]); |
|
| 78 | ||
| 79 | Assert::notNull($cart, 'Cart has not been found'); |
|
| 80 | ||
| 81 | /** @var ProductInterface $product */ |
|
| 82 | $productVariant = $this->productVariantRepository->findOneByCodeAndProductCode($putConfigurableItemToCart->productVariant(), $putConfigurableItemToCart->product()); |
|
| 83 | ||
| 84 | Assert::notNull($productVariant, 'Product variant has not been found'); |
|
| 85 | ||
| 86 | /** @var OrderItemInterface $cartItem */ |
|
| 87 | $cartItem = $this->cartItemFactory->createForCart($cart); |
|
| 88 | $cartItem->setVariant($productVariant); |
|
| 89 | $this->orderItemModifier->modify($cartItem, $putConfigurableItemToCart->quantity()); |
|
| 90 | ||
| 91 | $cart->addItem($cartItem); |
|
| 92 | ||
| 93 | $this->orderProcessor->process($cart); |
|
| 94 | ||
| 95 | $this->manager->persist($cart); |
|
| 96 | } |
|
| 97 | } |
|
| 98 | ||