SourceHydrator.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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\InventoryAdminUi\Model\Source;
  8. use Magento\Framework\Api\DataObjectHelper;
  9. use Magento\InventoryApi\Api\Data\SourceInterface;
  10. /**
  11. * Populate Source by data. Specified for form structure
  12. *
  13. * @api
  14. */
  15. class SourceHydrator
  16. {
  17. /**
  18. * @var DataObjectHelper
  19. */
  20. private $dataObjectHelper;
  21. /**
  22. * @var SourceRegionDataProcessor
  23. */
  24. private $sourceRegionDataProcessor;
  25. /**
  26. * @var SourceCoordinatesDataProcessor
  27. */
  28. private $sourceCoordinatesDataProcessor;
  29. /**
  30. * @param DataObjectHelper $dataObjectHelper
  31. * @param SourceRegionDataProcessor $sourceRegionDataProcessor
  32. * @param SourceCoordinatesDataProcessor $sourceCoordinatesDataProcessor
  33. */
  34. public function __construct(
  35. DataObjectHelper $dataObjectHelper,
  36. SourceRegionDataProcessor $sourceRegionDataProcessor,
  37. SourceCoordinatesDataProcessor $sourceCoordinatesDataProcessor
  38. ) {
  39. $this->dataObjectHelper = $dataObjectHelper;
  40. $this->sourceRegionDataProcessor = $sourceRegionDataProcessor;
  41. $this->sourceCoordinatesDataProcessor = $sourceCoordinatesDataProcessor;
  42. }
  43. /**
  44. * @param SourceInterface $source
  45. * @param array $data
  46. *
  47. * @return SourceInterface
  48. */
  49. public function hydrate(SourceInterface $source, array $data): SourceInterface
  50. {
  51. $data['general'] = $this->sourceRegionDataProcessor->execute($data['general']);
  52. $data['general'] = $this->sourceCoordinatesDataProcessor->execute($data['general']);
  53. $this->dataObjectHelper->populateWithArray($source, $data['general'], SourceInterface::class);
  54. return $source;
  55. }
  56. }