SourceItemsSaveHandler.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Inventory\Model\SourceItem\Command\Handler;
  8. use Exception;
  9. use Magento\Framework\Exception\CouldNotSaveException;
  10. use Magento\Framework\Exception\InputException;
  11. use Magento\Framework\Validation\ValidationException;
  12. use Magento\Inventory\Model\ResourceModel\SourceItem\SaveMultiple;
  13. use Magento\Inventory\Model\SourceItem\Validator\SourceItemsValidator;
  14. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  15. use Psr\Log\LoggerInterface;
  16. /**
  17. * Class SourceItemsSaveHandler
  18. */
  19. class SourceItemsSaveHandler
  20. {
  21. /**
  22. * @var SourceItemsValidator
  23. */
  24. private $sourceItemsValidator;
  25. /**
  26. * @var SaveMultiple
  27. */
  28. private $saveMultiple;
  29. /**
  30. * @var LoggerInterface
  31. */
  32. private $logger;
  33. /**
  34. * @param SourceItemsValidator $sourceItemsValidator
  35. * @param SaveMultiple $saveMultiple
  36. * @param LoggerInterface $logger
  37. */
  38. public function __construct(
  39. SourceItemsValidator $sourceItemsValidator,
  40. SaveMultiple $saveMultiple,
  41. LoggerInterface $logger
  42. ) {
  43. $this->sourceItemsValidator = $sourceItemsValidator;
  44. $this->saveMultiple = $saveMultiple;
  45. $this->logger = $logger;
  46. }
  47. /**
  48. * Save Multiple Source item data
  49. *
  50. * @param SourceItemInterface[] $sourceItems
  51. * @return void
  52. * @throws InputException
  53. * @throws ValidationException
  54. * @throws CouldNotSaveException
  55. */
  56. public function execute(array $sourceItems)
  57. {
  58. if (empty($sourceItems)) {
  59. throw new InputException(__('Input data is empty'));
  60. }
  61. $validationResult = $this->sourceItemsValidator->validate($sourceItems);
  62. if (!$validationResult->isValid()) {
  63. throw new ValidationException(__('Validation Failed'), null, 0, $validationResult);
  64. }
  65. try {
  66. $this->saveMultiple->execute($sourceItems);
  67. } catch (Exception $e) {
  68. $this->logger->error($e->getMessage());
  69. throw new CouldNotSaveException(__('Could not save Source Item'), $e);
  70. }
  71. }
  72. }