/** * {@inheritdoc} * @SuppressWarnings(PHPMD.NPathComplexity) */ public function processOptions(CartItemInterface $cartItem) { if ($cartItem->getProductType() !== \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) { return $cartItem; } $productOptions = []; $bundleOptions = $cartItem->getBuyRequest()->getBundleOption(); $bundleOptionsQty = $cartItem->getBuyRequest()->getBundleOptionQty(); foreach ($bundleOptions as $optionId => $optionSelections) { if (empty($optionSelections)) { continue; } $optionSelections = is_array($optionSelections) ? $optionSelections : [$optionSelections]; $optionQty = isset($bundleOptionsQty[$optionId]) ? $bundleOptionsQty[$optionId] : 1; /** @var \Magento\Bundle\Api\Data\BundleOptionInterface $productOption */ $productOption = $this->bundleOptionFactory->create(); $productOption->setOptionId($optionId); $productOption->setOptionSelections($optionSelections); $productOption->setOptionQty($optionQty); $productOptions[] = $productOption; } $extension = $this->productOptionExtensionFactory->create()->setBundleOptions($productOptions); if (!$cartItem->getProductOption()) { $cartItem->setProductOption($this->productOptionFactory->create()); } $cartItem->getProductOption()->setExtensionAttributes($extension); return $cartItem; }
/** * {@inheritdoc} */ public function convertToProductOption(DataObject $request) { $bundleOptions = $request->getBundleOption(); $bundleOptionsQty = $request->getBundleOptionQty(); if (!empty($bundleOptions) && is_array($bundleOptions)) { $data = []; foreach ($bundleOptions as $optionId => $optionSelections) { if (empty($optionSelections)) { continue; } $optionSelections = is_array($optionSelections) ? $optionSelections : [$optionSelections]; $optionQty = isset($bundleOptionsQty[$optionId]) ? $bundleOptionsQty[$optionId] : 1; /** @var BundleOptionInterface $productOption */ $productOption = $this->bundleOptionFactory->create(); $productOption->setOptionId($optionId); $productOption->setOptionSelections($optionSelections); $productOption->setOptionQty($optionQty); $data[] = $productOption; } return ['bundle_options' => $data]; } return []; }