Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GetSourcesAssignedToStockOrderedByPriority.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
17 use Psr\Log\LoggerInterface;
18 
23 {
27  private $searchCriteriaBuilder;
28 
32  private $sourceRepository;
33 
37  private $getStockSourceLinks;
38 
42  private $logger;
43 
47  private $sortOrderBuilder;
48 
56  public function __construct(
57  SearchCriteriaBuilder $searchCriteriaBuilder,
58  SourceRepositoryInterface $sourceRepository,
59  GetStockSourceLinksInterface $getStockSourceLinks,
60  SortOrderBuilder $sortOrderBuilder,
61  LoggerInterface $logger
62  ) {
63  $this->searchCriteriaBuilder = $searchCriteriaBuilder;
64  $this->sourceRepository = $sourceRepository;
65  $this->getStockSourceLinks = $getStockSourceLinks;
66  $this->logger = $logger;
67  $this->sortOrderBuilder = $sortOrderBuilder;
68  }
69 
73  public function execute(int $stockId): array
74  {
75  try {
76  $stockSourceLinks = $this->getStockSourceLinks($stockId);
77  $sources = [];
78  foreach ($stockSourceLinks as $link) {
79  $sources[] = $this->sourceRepository->get($link->getSourceCode());
80  }
81 
82  return $sources;
83  } catch (\Exception $e) {
84  $this->logger->error($e->getMessage());
85  throw new LocalizedException(__('Could not load Sources for Stock'), $e);
86  }
87  }
88 
95  private function getStockSourceLinks(int $stockId): array
96  {
97  $sortOrder = $this->sortOrderBuilder
99  ->setAscendingDirection()
100  ->create();
101  $searchCriteria = $this->searchCriteriaBuilder
102  ->addFilter(StockSourceLinkInterface::STOCK_ID, $stockId)
103  ->addSortOrder($sortOrder)
104  ->create();
105  $searchResult = $this->getStockSourceLinks->execute($searchCriteria);
106 
107  return $searchResult->getItems();
108  }
109 }
__construct(SearchCriteriaBuilder $searchCriteriaBuilder, SourceRepositoryInterface $sourceRepository, GetStockSourceLinksInterface $getStockSourceLinks, SortOrderBuilder $sortOrderBuilder, LoggerInterface $logger)
__()
Definition: __.php:13
$logger
$searchCriteria
$searchCriteriaBuilder
$sourceRepository
Definition: source.php:20