Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InlineEdit.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
22 
26 class InlineEdit extends Action implements HttpPostActionInterface
27 {
31  const ADMIN_RESOURCE = 'Magento_InventoryApi::stock';
32 
36  private $dataObjectHelper;
37 
41  private $stockRepository;
42 
48  public function __construct(
49  Context $context,
50  DataObjectHelper $dataObjectHelper,
51  StockRepositoryInterface $stockRepository
52  ) {
53  parent::__construct($context);
54  $this->dataObjectHelper = $dataObjectHelper;
55  $this->stockRepository = $stockRepository;
56  }
57 
61  public function execute(): ResultInterface
62  {
63  $errorMessages = [];
64  $request = $this->getRequest();
65  $requestData = $request->getParam('items', []);
66 
67  if ($request->isXmlHttpRequest() && $request->isPost() && $requestData) {
68  foreach ($requestData as $itemData) {
69  try {
70  $stockId = (int)$itemData[StockInterface::STOCK_ID];
71  $stock = $this->stockRepository->get($stockId);
72  $this->dataObjectHelper->populateWithArray($stock, $itemData, StockInterface::class);
73  $this->stockRepository->save($stock);
74  } catch (NoSuchEntityException $e) {
75  $errorMessages[] = __(
76  '[ID: %value] The Stock does not exist.',
77  ['value' => $stockId]
78  );
79  } catch (ValidationException $e) {
80  foreach ($e->getErrors() as $localizedError) {
81  $errorMessages[] = __('[ID: %value] %message', [
82  'value' => $stockId,
83  'message' => $localizedError->getMessage()
84  ]);
85  }
86  } catch (CouldNotSaveException $e) {
87  $errorMessages[] = __('[ID: %value] %message', [
88  'value' => $stockId,
89  'message' => $e->getMessage()
90  ]);
91  }
92  }
93  } else {
94  $errorMessages[] = __('Please correct the sent data.');
95  }
96 
98  $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
99  $resultJson->setData([
100  'messages' => $errorMessages,
101  'error' => count($errorMessages),
102  ]);
103 
104  return $resultJson;
105  }
106 }
__construct(Context $context, DataObjectHelper $dataObjectHelper, StockRepositoryInterface $stockRepository)
Definition: InlineEdit.php:48
__()
Definition: __.php:13
$stockRepository
Definition: stock.php:19
$stock