Save.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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\Source\Command;
  8. use Magento\Framework\Exception\CouldNotSaveException;
  9. use Magento\Framework\Validation\ValidationException;
  10. use Magento\Inventory\Model\ResourceModel\Source as SourceResourceModel;
  11. use Magento\InventoryApi\Model\SourceValidatorInterface;
  12. use Magento\InventoryApi\Api\Data\SourceInterface;
  13. use Psr\Log\LoggerInterface;
  14. /**
  15. * @inheritdoc
  16. */
  17. class Save implements SaveInterface
  18. {
  19. /**
  20. * @var SourceValidatorInterface
  21. */
  22. private $sourceValidator;
  23. /**
  24. * @var SourceResourceModel
  25. */
  26. private $sourceResource;
  27. /**
  28. * @var LoggerInterface
  29. */
  30. private $logger;
  31. /**
  32. * @param SourceValidatorInterface $sourceValidator
  33. * @param SourceResourceModel $sourceResource
  34. * @param LoggerInterface $logger
  35. */
  36. public function __construct(
  37. SourceValidatorInterface $sourceValidator,
  38. SourceResourceModel $sourceResource,
  39. LoggerInterface $logger
  40. ) {
  41. $this->sourceValidator = $sourceValidator;
  42. $this->sourceResource = $sourceResource;
  43. $this->logger = $logger;
  44. }
  45. /**
  46. * @inheritdoc
  47. */
  48. public function execute(SourceInterface $source)
  49. {
  50. $validationResult = $this->sourceValidator->validate($source);
  51. if (!$validationResult->isValid()) {
  52. throw new ValidationException(__('Validation Failed'), null, 0, $validationResult);
  53. }
  54. try {
  55. $this->sourceResource->save($source);
  56. $source->getSourceCode();
  57. } catch (\Exception $e) {
  58. $this->logger->error($e->getMessage());
  59. throw new CouldNotSaveException(__('Could not save Source'), $e);
  60. }
  61. }
  62. }