Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StockSaveProcessor.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
14 use Magento\InventoryApi\Api\Data\StockInterfaceFactory;
16 
21 {
25  private $stockFactory;
26 
30  private $stockRepository;
31 
35  private $stockSourceLinkProcessor;
36 
40  private $dataObjectHelper;
41 
45  private $eventManager;
46 
54  public function __construct(
55  StockInterfaceFactory $stockFactory,
56  StockRepositoryInterface $stockRepository,
57  StockSourceLinkProcessor $stockSourceLinkProcessor,
58  DataObjectHelper $dataObjectHelper,
59  EventManager $eventManager
60  ) {
61  $this->stockFactory = $stockFactory;
62  $this->stockRepository = $stockRepository;
63  $this->stockSourceLinkProcessor = $stockSourceLinkProcessor;
64  $this->dataObjectHelper = $dataObjectHelper;
65  $this->eventManager = $eventManager;
66  }
67 
75  public function process($stockId, RequestInterface $request): int
76  {
77  if (null === $stockId) {
78  $stock = $this->stockFactory->create();
79  } else {
80  $stock = $this->stockRepository->get($stockId);
81  }
82  $requestData = $request->getParams();
83  $this->dataObjectHelper->populateWithArray($stock, $requestData['general'], StockInterface::class);
84  $this->eventManager->dispatch(
85  'controller_action_inventory_populate_stock_with_data',
86  [
87  'request' => $request,
88  'stock' => $stock,
89  ]
90  );
91  $stockId = $this->stockRepository->save($stock);
92  $this->eventManager->dispatch(
93  'save_stock_controller_processor_after_save',
94  [
95  'request' => $request,
96  'stock' => $stock,
97  ]
98  );
99 
100  $assignedSources =
101  isset($requestData['sources']['assigned_sources'])
102  && is_array($requestData['sources']['assigned_sources'])
103  ? $requestData['sources']['assigned_sources']
104  : [];
105  $this->stockSourceLinkProcessor->process($stockId, $assignedSources);
106 
107  return $stockId;
108  }
109 }
__construct(StockInterfaceFactory $stockFactory, StockRepositoryInterface $stockRepository, StockSourceLinkProcessor $stockSourceLinkProcessor, DataObjectHelper $dataObjectHelper, EventManager $eventManager)
$stockRepository
Definition: stock.php:19
$stockFactory
Definition: stock.php:15
$stock