dataObjectHelper = $dataObjectHelper; $this->sourceRepository = $sourceRepository; $this->sourceCoordinatesDataProcessor = $sourceCoordinatesDataProcessor; } /** * @inheritdoc */ public function execute(): ResultInterface { $errorMessages = []; $request = $this->getRequest(); $requestData = $request->getParam('items', []); if ($request->isXmlHttpRequest() && $request->isPost() && $requestData) { foreach ($requestData as $itemData) { try { $sourceCode = $itemData[SourceInterface::SOURCE_CODE]; $itemData = $this->sourceCoordinatesDataProcessor->execute($itemData); $source = $this->sourceRepository->get($sourceCode); $this->dataObjectHelper->populateWithArray($source, $itemData, SourceInterface::class); $this->sourceRepository->save($source); } catch (NoSuchEntityException $e) { $errorMessages[] = __( '[ID: %value] The Source does not exist.', ['value' => $sourceCode] ); } catch (ValidationException $e) { foreach ($e->getErrors() as $localizedError) { $errorMessages[] = __('[ID: %value] %message', [ 'value' => $sourceCode, 'message' => $localizedError->getMessage() ]); } } catch (CouldNotSaveException $e) { $errorMessages[] = __( '[ID: %value] %message', [ 'value' => $sourceCode, 'message' => $e->getMessage() ] ); } } } else { $errorMessages[] = __('Please correct the sent data.'); } /** @var Json $resultJson */ $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); $resultJson->setData([ 'messages' => $errorMessages, 'error' => count($errorMessages), ]); return $resultJson; } }