Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
All Data Structures Namespaces Files Functions Variables Pages
InlineEdit.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
23 
27 class InlineEdit extends Action implements HttpPostActionInterface
28 {
32  const ADMIN_RESOURCE = 'Magento_InventoryApi::source';
33 
37  private $dataObjectHelper;
38 
42  private $sourceRepository;
43 
47  private $sourceCoordinatesDataProcessor;
48 
55  public function __construct(
56  Context $context,
57  DataObjectHelper $dataObjectHelper,
58  SourceRepositoryInterface $sourceRepository,
59  SourceCoordinatesDataProcessor $sourceCoordinatesDataProcessor
60  ) {
61  parent::__construct($context);
62  $this->dataObjectHelper = $dataObjectHelper;
63  $this->sourceRepository = $sourceRepository;
64  $this->sourceCoordinatesDataProcessor = $sourceCoordinatesDataProcessor;
65  }
66 
70  public function execute(): ResultInterface
71  {
72  $errorMessages = [];
73  $request = $this->getRequest();
74  $requestData = $request->getParam('items', []);
75 
76  if ($request->isXmlHttpRequest() && $request->isPost() && $requestData) {
77  foreach ($requestData as $itemData) {
78  try {
80  $itemData = $this->sourceCoordinatesDataProcessor->execute($itemData);
81  $source = $this->sourceRepository->get($sourceCode);
82  $this->dataObjectHelper->populateWithArray($source, $itemData, SourceInterface::class);
83  $this->sourceRepository->save($source);
84  } catch (NoSuchEntityException $e) {
85  $errorMessages[] = __(
86  '[ID: %value] The Source does not exist.',
87  ['value' => $sourceCode]
88  );
89  } catch (ValidationException $e) {
90  foreach ($e->getErrors() as $localizedError) {
91  $errorMessages[] = __('[ID: %value] %message', [
92  'value' => $sourceCode,
93  'message' => $localizedError->getMessage()
94  ]);
95  }
96  } catch (CouldNotSaveException $e) {
97  $errorMessages[] = __(
98  '[ID: %value] %message',
99  [
100  'value' => $sourceCode,
101  'message' => $e->getMessage()
102  ]
103  );
104  }
105  }
106  } else {
107  $errorMessages[] = __('Please correct the sent data.');
108  }
109 
111  $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
112  $resultJson->setData([
113  'messages' => $errorMessages,
114  'error' => count($errorMessages),
115  ]);
116 
117  return $resultJson;
118  }
119 }
$source
Definition: source.php:23
__()
Definition: __.php:13
__construct(Context $context, DataObjectHelper $dataObjectHelper, SourceRepositoryInterface $sourceRepository, SourceCoordinatesDataProcessor $sourceCoordinatesDataProcessor)
Definition: InlineEdit.php:55
$sourceCode
Definition: inventory.phtml:11
$sourceRepository
Definition: source.php:20