EnabledSourceCode.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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\InventoryLowQuantityNotificationAdminUi\Model\OptionSource;
  8. use Magento\Framework\Api\SearchCriteriaBuilder;
  9. use Magento\Framework\Data\OptionSourceInterface;
  10. use Magento\InventoryApi\Api\Data\SourceInterface;
  11. use Magento\InventoryApi\Api\SourceRepositoryInterface;
  12. /**
  13. * Provide option values for UI
  14. *
  15. * @api
  16. */
  17. class EnabledSourceCode implements OptionSourceInterface
  18. {
  19. /**
  20. * @var SourceRepositoryInterface
  21. */
  22. private $sourceRepository;
  23. /**
  24. * @var SearchCriteriaBuilder
  25. */
  26. private $searchCriteriaBuilder;
  27. /**
  28. * @param SourceRepositoryInterface $sourceRepository
  29. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  30. */
  31. public function __construct(
  32. SourceRepositoryInterface $sourceRepository,
  33. SearchCriteriaBuilder $searchCriteriaBuilder
  34. ) {
  35. $this->sourceRepository = $sourceRepository;
  36. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  37. }
  38. /**
  39. * @inheritdoc
  40. */
  41. public function toOptionArray(): array
  42. {
  43. $searchCriteria = $this->searchCriteriaBuilder
  44. ->addFilter(SourceInterface::ENABLED, true)
  45. ->create();
  46. $sourcesSearchResult = $this->sourceRepository->getList($searchCriteria);
  47. $sourcesList = $sourcesSearchResult->getItems();
  48. $optionArray = [];
  49. foreach ($sourcesList as $source) {
  50. $optionArray[] = ['value' => $source->getSourceCode(), 'label' => $source->getSourceCode()];
  51. }
  52. return $optionArray;
  53. }
  54. }