![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/Ecombricks/InventoryInventoryCatalog/Model/SourceItemOption/ |
<?php /** * Copyright © eComBricks. All rights reserved. * See LICENSE.txt for license details. */ declare(strict_types=1); namespace Ecombricks\InventoryInventoryCatalog\Model\SourceItemOption; /** * Source item options processor */ class Processor { /** * Source item option factory * * @var \Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterfaceFactory */ protected $sourceItemOptionFactory; /** * Save source item options * * @var \Ecombricks\InventoryInventoryCatalog\Api\SourceItemOption\SaveInterface */ protected $saveSourceItemOptions; /** * Delete source item options * * @var \Ecombricks\InventoryInventoryCatalog\Api\SourceItemOption\DeleteInterface */ protected $deleteSourceItemOptions; /** * Data object helper * * @var \Magento\Framework\Api\DataObjectHelper */ protected $dataObjectHelper; /** * Surce item option label * * @var \Ecombricks\InventoryInventoryCatalog\Model\SourceItemOption\Label */ protected $sourceItemOptionLabel; /** * Surce item option value data key * * @var \Ecombricks\InventoryInventoryCatalog\Model\SourceItemOption\ValueDataKey */ protected $sourceItemOptionValueDataKey; /** * Constructor * * @param \Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterfaceFactory $sourceItemOptionFactory * @param \Ecombricks\InventoryInventoryCatalog\Api\SourceItemOption\SaveInterface $saveSourceItemOptions * @param \Ecombricks\InventoryInventoryCatalog\Api\SourceItemOption\DeleteInterface $deleteSourceItemOptions * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper * @param \Ecombricks\InventoryInventoryCatalog\Model\SourceItemOption\Label $sourceItemOptionLabel * @param \Ecombricks\InventoryInventoryCatalog\Model\SourceItemOption\ValueDataKey $sourceItemOptionValueDataKey * @return void */ public function __construct( \Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterfaceFactory $sourceItemOptionFactory, \Ecombricks\InventoryInventoryCatalog\Api\SourceItemOption\SaveInterface $saveSourceItemOptions, \Ecombricks\InventoryInventoryCatalog\Api\SourceItemOption\DeleteInterface $deleteSourceItemOptions, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, \Ecombricks\InventoryInventoryCatalog\Model\SourceItemOption\Label $sourceItemOptionLabel, \Ecombricks\InventoryInventoryCatalog\Model\SourceItemOption\ValueDataKey $sourceItemOptionValueDataKey ) { $this->sourceItemOptionFactory = $sourceItemOptionFactory; $this->saveSourceItemOptions = $saveSourceItemOptions; $this->deleteSourceItemOptions = $deleteSourceItemOptions; $this->dataObjectHelper = $dataObjectHelper; $this->sourceItemOptionLabel = $sourceItemOptionLabel; $this->sourceItemOptionValueDataKey = $sourceItemOptionValueDataKey; } /** * Validate source item option data * * @param array $sourceItemOptionData * @return $this * @throws \Magento\Framework\Exception\InputException */ protected function validateSourceItemOptionData(array $sourceItemOptionData) { if (!isset($sourceItemOptionData[\Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterface::SOURCE_CODE])) { throw new \Magento\Framework\Exception\InputException(__('No source code provided for the %1.', $this->sourceItemOptionLabel->render())); } return $this; } /** * Prepare source item option data * * @param string $sku * @param array $sourceItemOptionData * @return array */ protected function prepareSourceItemOptionData(string $sku, array $sourceItemOptionData): array { $valueDataKey = $this->sourceItemOptionValueDataKey->getKey(); $sourceItemOptionData[\Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterface::SKU] = $sku; $sourceItemOptionData[\Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterface::VALUE] = $sourceItemOptionData[$valueDataKey]; if ($sourceItemOptionData[$valueDataKey.'_use_default']) { unset($sourceItemOptionData[\Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterface::VALUE]); } return $sourceItemOptionData; } /** * Execute * * @param string $sku * @param array $sourceItemOptionsData * @return $this * @throws \Magento\Framework\Exception\InputException */ public function execute($sku, array $sourceItemOptionsData) { $sourceItemOptions = []; foreach ($sourceItemOptionsData as $sourceItemOptionData) { $this->validateSourceItemOptionData($sourceItemOptionData); $sourceItemOption = $this->sourceItemOptionFactory->create(); $this->dataObjectHelper->populateWithArray( $sourceItemOption, $this->prepareSourceItemOptionData($sku, $sourceItemOptionData), \Ecombricks\InventoryInventoryCatalog\Api\Data\SourceItemOptionInterface::class ); $sourceItemOptions[] = $sourceItemOption; } if (count($sourceItemOptions) <= 0) { return $this; } $this->deleteSourceItemOptions->execute($sourceItemOptions); $this->saveSourceItemOptions->execute($sourceItemOptions); return $this; } }