IsWebsiteInMultiSourceMode.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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\InventoryShippingAdminUi\Model;
  8. use Magento\InventorySalesApi\Model\StockByWebsiteIdResolverInterface;
  9. use Magento\InventoryApi\Api\GetStockSourceLinksInterface;
  10. use Magento\InventoryApi\Api\Data\StockSourceLinkInterface;
  11. use Magento\Framework\Api\SearchCriteriaBuilder;
  12. class IsWebsiteInMultiSourceMode
  13. {
  14. /**
  15. * @var StockByWebsiteIdResolverInterface
  16. */
  17. private $stockByWebsiteIdResolver;
  18. /**
  19. * @var SearchCriteriaBuilder
  20. */
  21. private $searchCriteriaBuilder;
  22. /**
  23. * @var GetStockSourceLinksInterface
  24. */
  25. private $getStockSourceLinks;
  26. /**
  27. * isMultiSourceMode constructor.
  28. * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver
  29. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  30. * @param GetStockSourceLinksInterface $getStockSourceLinks
  31. */
  32. public function __construct(
  33. StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver,
  34. SearchCriteriaBuilder $searchCriteriaBuilder,
  35. GetStockSourceLinksInterface $getStockSourceLinks
  36. ) {
  37. $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver;
  38. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  39. $this->getStockSourceLinks = $getStockSourceLinks;
  40. }
  41. /**
  42. * Check if website in Multi Source Mode
  43. *
  44. * @param int $websiteId
  45. * @return bool
  46. */
  47. public function execute(int $websiteId):bool
  48. {
  49. $stockId = (int)$this->stockByWebsiteIdResolver->execute((int)$websiteId)->getStockId();
  50. $searchCriteria = $this->searchCriteriaBuilder
  51. ->addFilter(StockSourceLinkInterface::STOCK_ID, $stockId)
  52. ->create();
  53. return $this->getStockSourceLinks->execute($searchCriteria)->getTotalCount() > 1;
  54. }
  55. }