Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssignToDefaultStockDefaultSourceValidator.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
11 use Magento\Framework\Validation\ValidationResultFactory;
16 
18 {
22  private $validationResultFactory;
23 
27  private $defaultSourceProvider;
28 
32  private $defaultStockProvider;
33 
39  public function __construct(
40  ValidationResultFactory $validationResultFactory,
41  DefaultSourceProviderInterface $defaultSourceProvider,
42  DefaultStockProviderInterface $defaultStockProvider
43  ) {
44  $this->validationResultFactory = $validationResultFactory;
45  $this->defaultSourceProvider = $defaultSourceProvider;
46  $this->defaultStockProvider = $defaultStockProvider;
47  }
48 
53  {
54  $initialAssignment = $this->isInitialAssignment($link);
55  $linkContainDefaultSourceOrStock = $this->isLinkContainDefaultSourceOrStock($link);
56  $errors = [];
57  if (!$initialAssignment && $linkContainDefaultSourceOrStock) {
58  $errors[] = __('Can not save link related to Default Source or Default Stock');
59  }
60 
61  return $this->validationResultFactory->create(['errors' => $errors]);
62  }
63 
70  private function isInitialAssignment(StockSourceLinkInterface $link)
71  {
72  $defaultStockId = $this->defaultStockProvider->getId();
73  $defaultSourceCode = $this->defaultSourceProvider->getCode();
74  $linkStockId = $link->getStockId();
75  $linkSourceCode = $link->getSourceCode();
76  $initialAssignment = false;
77  if ($defaultStockId === $linkStockId && $defaultSourceCode === $linkSourceCode) {
78  $initialAssignment = true;
79  }
80  return $initialAssignment;
81  }
82 
91  private function isLinkContainDefaultSourceOrStock(StockSourceLinkInterface $link)
92  {
93  $defaultStockId = $this->defaultStockProvider->getId();
94  $defaultSourceCode = $this->defaultSourceProvider->getCode();
95  $linkStockId = $link->getStockId();
96  $linkSourceCode = $link->getSourceCode();
97  $linkContainDefaultSourceOrStock = false;
98  if ($linkStockId === $defaultStockId || $linkSourceCode === $defaultSourceCode) {
99  $linkContainDefaultSourceOrStock = true;
100  }
101  return $linkContainDefaultSourceOrStock;
102  }
103 }
__()
Definition: __.php:13
$errors
Definition: overview.phtml:9