| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- declare(strict_types=1);
 
- namespace Magento\InventoryCatalogAdminUi\ViewModel;
 
- use Magento\Framework\Api\SearchCriteriaBuilder;
 
- use Magento\Framework\View\Element\Block\ArgumentInterface;
 
- use Magento\InventoryApi\Api\Data\SourceInterface;
 
- use Magento\InventoryApi\Api\Data\SourceItemInterface;
 
- use Magento\InventoryApi\Api\SourceRepositoryInterface;
 
- use Magento\InventoryApi\Model\GetSourceCodesBySkusInterface;
 
- use Magento\InventoryCatalogAdminUi\Model\BulkSessionProductsStorage;
 
- class SourcesSelection implements ArgumentInterface
 
- {
 
-     /**
 
-      * @var SourceRepositoryInterface
 
-      */
 
-     private $sourceRepository;
 
-     /**
 
-      * @var BulkSessionProductsStorage
 
-      */
 
-     private $bulkSessionProductsStorage;
 
-     /**
 
-      * @var SearchCriteriaBuilder
 
-      */
 
-     private $searchCriteriaBuilder;
 
-     /**
 
-      * @var GetSourceCodesBySkusInterface
 
-      */
 
-     private $getSourceCodesBySkus;
 
-     /**
 
-      * @param SourceRepositoryInterface $sourceRepository
 
-      * @param SearchCriteriaBuilder $searchCriteriaBuilder
 
-      * @param GetSourceCodesBySkusInterface $getSourceCodesBySkus
 
-      * @param BulkSessionProductsStorage $bulkSessionProductsStorage
 
-      * @SuppressWarnings(PHPMD.LongVariables)
 
-      */
 
-     public function __construct(
 
-         SourceRepositoryInterface $sourceRepository,
 
-         SearchCriteriaBuilder $searchCriteriaBuilder,
 
-         GetSourceCodesBySkusInterface $getSourceCodesBySkus,
 
-         BulkSessionProductsStorage $bulkSessionProductsStorage
 
-     ) {
 
-         $this->sourceRepository = $sourceRepository;
 
-         $this->bulkSessionProductsStorage = $bulkSessionProductsStorage;
 
-         $this->searchCriteriaBuilder = $searchCriteriaBuilder;
 
-         $this->getSourceCodesBySkus = $getSourceCodesBySkus;
 
-     }
 
-     /**
 
-      * Get a list of available sources
 
-      * @return SourceInterface[]
 
-      */
 
-     public function getSources(): array
 
-     {
 
-         return $this->sourceRepository->getList()->getItems();
 
-     }
 
-     /**
 
-      * Get a list of sources assigned to the products selection
 
-      * @return SourceInterface[]
 
-      */
 
-     public function getAssignedSources(): array
 
-     {
 
-         $skus = $this->bulkSessionProductsStorage->getProductsSkus();
 
-         $sourceCodes = $this->getSourceCodesBySkus->execute($skus);
 
-         $searchCriteria = $this->searchCriteriaBuilder
 
-             ->addFilter(
 
-                 SourceItemInterface::SOURCE_CODE,
 
-                 $sourceCodes,
 
-                 'in'
 
-             )
 
-             ->create();
 
-         return $this->sourceRepository->getList($searchCriteria)->getItems();
 
-     }
 
-     /**
 
-      * @return int
 
-      */
 
-     public function getProductsCount(): int
 
-     {
 
-         return count($this->bulkSessionProductsStorage->getProductsSkus());
 
-     }
 
- }
 
 
  |