Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AddNoticeForUnassignedSalesChannels.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
16 
22 {
26  private $messageManager;
27 
31  private $getAssignedSalesChannelsForStock;
32 
37  public function __construct(
38  ManagerInterface $messageManager,
39  GetAssignedSalesChannelsForStockInterface $getAssignedSalesChannelsForStock
40  ) {
41  $this->messageManager = $messageManager;
42  $this->getAssignedSalesChannelsForStock = $getAssignedSalesChannelsForStock;
43  }
44 
55  public function afterSave(
56  StockRepositoryInterface $subject,
57  int $stockId,
59  ): int {
60  $unAssignedSalesChannels = $this->getUnassignedSalesChannelsForStock($stock);
61 
62  if (count($unAssignedSalesChannels)) {
63  $this->messageManager->addNoticeMessage(
64  __('All unassigned sales channels will be assigned to the Default Stock')
65  );
66  }
67 
68  return $stockId;
69  }
70 
77  private function getUnassignedSalesChannelsForStock(StockInterface $stock): array
78  {
79  $newWebsiteCodes = $result = [];
80  $assignedSalesChannels = $this->getAssignedSalesChannelsForStock->execute((int)$stock->getStockId());
81  $extensionAttributes = $stock->getExtensionAttributes();
82  $newSalesChannels = $extensionAttributes->getSalesChannels() ?: [];
83 
84  foreach ($newSalesChannels as $salesChannel) {
85  if ($salesChannel->getType() === SalesChannelInterface::TYPE_WEBSITE) {
86  $newWebsiteCodes[] = $salesChannel->getCode();
87  }
88  }
89 
90  foreach ($assignedSalesChannels as $salesChannel) {
91  if ($salesChannel->getType() === SalesChannelInterface::TYPE_WEBSITE
92  && !in_array($salesChannel->getCode(), $newWebsiteCodes, true)
93  ) {
94  $result[] = $salesChannel;
95  }
96  }
97 
98  return $result;
99  }
100 }
__()
Definition: __.php:13
__construct(ManagerInterface $messageManager, GetAssignedSalesChannelsForStockInterface $getAssignedSalesChannelsForStock)
$extensionAttributes
Definition: payment.php:22
$stock