123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\InventoryLowQuantityNotification\Model\SourceItemConfiguration;
- use Magento\Framework\Api\DataObjectHelper;
- use Magento\Framework\Exception\InputException;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\InventoryLowQuantityNotification\Model\ResourceModel\SourceItemConfiguration\GetData as GetDataModel;
- use Magento\InventoryLowQuantityNotificationApi\Api\Data\SourceItemConfigurationInterface;
- use Magento\InventoryLowQuantityNotificationApi\Api\Data\SourceItemConfigurationInterfaceFactory;
- use Magento\InventoryLowQuantityNotificationApi\Api\GetSourceItemConfigurationInterface;
- use Psr\Log\LoggerInterface;
- /**
- * @inheritdoc
- */
- class Get implements GetSourceItemConfigurationInterface
- {
- /**
- * @var GetDataModel
- */
- private $getDataResourceModel;
- /**
- * @var GetDefaultValues
- */
- private $getDefaultValues;
- /**
- * @var SourceItemConfigurationInterfaceFactory
- */
- private $sourceItemConfigurationFactory;
- /**
- * @var DataObjectHelper
- */
- private $dataObjectHelper;
- /**
- * @var LoggerInterface
- */
- private $logger;
- /**
- * @param GetDataModel $getDataResourceModel
- * @param GetDefaultValues $getDefaultValues
- * @param SourceItemConfigurationInterfaceFactory $sourceItemConfigurationFactory
- * @param DataObjectHelper $dataObjectHelper
- * @param LoggerInterface $logger
- */
- public function __construct(
- GetDataModel $getDataResourceModel,
- GetDefaultValues $getDefaultValues,
- SourceItemConfigurationInterfaceFactory $sourceItemConfigurationFactory,
- DataObjectHelper $dataObjectHelper,
- LoggerInterface $logger
- ) {
- $this->getDataResourceModel = $getDataResourceModel;
- $this->getDefaultValues = $getDefaultValues;
- $this->sourceItemConfigurationFactory = $sourceItemConfigurationFactory;
- $this->dataObjectHelper = $dataObjectHelper;
- $this->logger = $logger;
- }
- /**
- * @inheritdoc
- */
- public function execute(string $sourceCode, string $sku): SourceItemConfigurationInterface
- {
- if (empty($sourceCode) || empty($sku)) {
- throw new InputException(__('Wrong input data'));
- }
- try {
- return $this->getConfiguration($sourceCode, $sku);
- } catch (\Exception $e) {
- $this->logger->error($e->getMessage());
- throw new LocalizedException(__('Could not load Source Item Configuration.'), $e);
- }
- }
- /**
- * @param string $sourceCode
- * @param string $sku
- * @return SourceItemConfigurationInterface
- */
- private function getConfiguration(string $sourceCode, string $sku): SourceItemConfigurationInterface
- {
- $sourceItemConfigurationData = $this->getDataResourceModel->execute($sourceCode, $sku);
- if (null === $sourceItemConfigurationData) {
- $sourceItemConfigurationData = $this->getDefaultValues->execute($sourceCode, $sku);
- }
- /** @var SourceItemConfigurationInterface $sourceItem */
- $sourceItemConfiguration = $this->sourceItemConfigurationFactory->create();
- $this->dataObjectHelper->populateWithArray(
- $sourceItemConfiguration,
- $sourceItemConfigurationData,
- SourceItemConfigurationInterface::class
- );
- return $sourceItemConfiguration;
- }
- }
|