reportProcessor = $reportProcessor;
$this->historyModel = $historyModel;
$this->reportHelper = $reportHelper;
$this->_helper = $helper;
parent::__construct($context);
}
/**
* TODO: Refactor Code
* @param \Magento\Framework\View\Element\AbstractBlock $resultBlock
* @param ProcessingErrorAggregatorInterface $errorAggregator
* @return $this
*/
public function getImportErrorMessages(
ProcessingErrorAggregatorInterface $errorAggregator
) {
$resultText = '';
if ($errorAggregator->getErrorsCount()) {
$message = '';
$counter = 0;
foreach ($this->getErrorMessages($errorAggregator) as $error) {
$message .= ++$counter . '. ' . $error . '
';
if ($counter >= self::LIMIT_ERRORS_MESSAGE) {
break;
}
}
if ($errorAggregator->hasFatalExceptions()) {
foreach ($this->getSystemExceptions($errorAggregator) as $error) {
$message .= $error->getErrorMessage()
. __('Additional data') . ': '
. $error->getErrorDescription() . '';
}
}
try {
$resultText.=
'' . __('Following Error(s) has been occurred during importing process:') . '
'
. '
'
;
} catch (\Exception $e) {
foreach ($this->getErrorMessages($errorAggregator) as $errorMessage) {
$resultText.= $errorMessage;
}
}
}
return $resultText;
}
/**
* @param \Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorAggregatorInterface $errorAggregator
* @return array
*/
protected function getErrorMessages(ProcessingErrorAggregatorInterface $errorAggregator)
{
$messages = [];
$rowMessages = $errorAggregator->getRowsGroupedByErrorCode([], [AbstractEntity::ERROR_CODE_SYSTEM_EXCEPTION]);
foreach ($rowMessages as $errorCode => $rows) {
$messages[] = $errorCode . ' ' . __('in rows:') . ' ' . implode(', ', $rows);
}
return $messages;
}
/**
* @param ProcessingErrorAggregatorInterface $errorAggregator
* @return \Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError[]
*/
protected function getSystemExceptions(ProcessingErrorAggregatorInterface $errorAggregator)
{
return $errorAggregator->getErrorsByCode([AbstractEntity::ERROR_CODE_SYSTEM_EXCEPTION]);
}
/**
* @param ProcessingErrorAggregatorInterface $errorAggregator
* @return string
*/
protected function createErrorReport(ProcessingErrorAggregatorInterface $errorAggregator)
{
$this->historyModel->loadLastInsertItem();
$sourceFile = $this->reportHelper->getReportAbsolutePath($this->historyModel->getImportedFile());
$writeOnlyErrorItems = true;
if ($this->historyModel->getData('execution_time') == ModelHistory::IMPORT_VALIDATION) {
$writeOnlyErrorItems = false;
}
$fileName = $this->reportProcessor->createReport($sourceFile, $errorAggregator, $writeOnlyErrorItems);
$this->historyModel->addErrorReportFile($fileName);
return $fileName;
}
/**
* @param string $fileName
* @return string
*/
protected function createDownloadUrlImportHistoryFile($fileName)
{
return $this->getUrl(self::IMPORT_HISTORY_FILE_DOWNLOAD_ROUTE, ['filename' => $fileName]);
}
/**
* Generate url by route and parameters
*
* @param string $route
* @param array $params
* @return string
*/
public function getUrl($route = '', $params = [])
{
return $this->_helper->getUrl($route, $params);
}
}