Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PopulateWithWebsiteSalesChannelsObserver.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
15 use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
16 
24 {
28  private $salesChannelFactory;
29 
33  public function __construct(SalesChannelInterfaceFactory $salesChannelFactory)
34  {
35  $this->salesChannelFactory = $salesChannelFactory;
36  }
37 
44  public function execute(EventObserver $observer)
45  {
47  $stock = $observer->getEvent()->getStock();
49  $request = $observer->getEvent()->getRequest();
50  $requestData = $request->getParams();
51 
52  $extensionAttributes = $stock->getExtensionAttributes();
53  $assignedSalesChannels = $extensionAttributes->getSalesChannels();
54 
55  if (null !== $assignedSalesChannels) {
56  foreach ($assignedSalesChannels as $key => $assignedSalesChannel) {
57  if ($assignedSalesChannel->getType() === SalesChannelInterface::TYPE_WEBSITE) {
58  unset($assignedSalesChannels[$key]);
59  }
60  }
61  }
62 
63  if (isset($requestData['sales_channels'][SalesChannelInterface::TYPE_WEBSITE])
64  && is_array($requestData['sales_channels'][SalesChannelInterface::TYPE_WEBSITE])
65  ) {
66  foreach ($requestData['sales_channels'][SalesChannelInterface::TYPE_WEBSITE] as $websiteCode) {
67  $assignedSalesChannels[] = $this->createSalesChannelByWebsiteCode($websiteCode);
68  }
69  }
70  $extensionAttributes->setSalesChannels($assignedSalesChannels);
71  }
72 
79  private function createSalesChannelByWebsiteCode(string $websiteCode): SalesChannelInterface
80  {
81  $salesChannel = $this->salesChannelFactory->create();
82  $salesChannel->setCode($websiteCode);
83  $salesChannel->setType(SalesChannelInterface::TYPE_WEBSITE);
84  return $salesChannel;
85  }
86 }
$extensionAttributes
Definition: payment.php:22
$stock
if(!isset($_GET['website_code'])) $websiteCode
Definition: website.php:11