Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SaveSalesChannelsLinksPlugin.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 $replaceSalesChannelsOnStock;
28 
32  private $logger;
33 
37  private $getAssignedSalesChannelsForStock;
38 
42  private $defaultStockProvider;
43 
47  private $getUnassignedSalesChannelsForStock;
48 
56  public function __construct(
57  ReplaceSalesChannelsForStockInterface $replaceSalesChannelsOnStock,
58  LoggerInterface $logger,
59  GetAssignedSalesChannelsForStockInterface $getAssignedSalesChannelsForStock,
60  DefaultStockProviderInterface $defaultStockProvider,
61  GetUnassignedSalesChannelsForStock $getUnassignedSalesChannelsForStock
62  ) {
63  $this->replaceSalesChannelsOnStock = $replaceSalesChannelsOnStock;
64  $this->logger = $logger;
65  $this->getAssignedSalesChannelsForStock = $getAssignedSalesChannelsForStock;
66  $this->defaultStockProvider = $defaultStockProvider;
67  $this->getUnassignedSalesChannelsForStock = $getUnassignedSalesChannelsForStock;
68  }
69 
80  public function afterSave(
81  StockRepositoryInterface $subject,
82  int $stockId,
84  ): int {
85  $extensionAttributes = $stock->getExtensionAttributes();
86  $salesChannels = $extensionAttributes->getSalesChannels() ?: [];
87  $unAssignedSalesChannels = $this->getUnassignedSalesChannelsForStock->execute($stock);
88 
89  try {
90  $this->replaceSalesChannelsOnStock->execute($salesChannels, $stockId);
91 
92  if (count($unAssignedSalesChannels)) {
93  $mergedSalesChannels = array_merge(
94  $unAssignedSalesChannels,
95  $this->getAssignedSalesChannelsForStock->execute($this->defaultStockProvider->getId())
96  );
97  $this->replaceSalesChannelsOnStock->execute(
98  $mergedSalesChannels,
99  $this->defaultStockProvider->getId()
100  );
101  }
102  } catch (\Exception $e) {
103  $this->logger->error($e->getMessage());
104  throw new CouldNotSaveException(__('Could not replace Sales Channels for Stock'), $e);
105  }
106 
107  return $stockId;
108  }
109 }
__()
Definition: __.php:13
$logger
$extensionAttributes
Definition: payment.php:22
$stock