55 */
66namespace Magento \ImportExport \Controller \Adminhtml ;
77
8- use Magento \Backend \App \Action ;
9- use Magento \ImportExport \Model \Import \Entity \AbstractEntity ;
8+ use Magento \Backend \App \Action \Context ;
9+ use Magento \Framework \View \Element \AbstractBlock ;
10+ use Magento \ImportExport \Helper \Report ;
11+ use Magento \ImportExport \Model \Import \ErrorProcessing \ProcessingError ;
1012use Magento \ImportExport \Model \Import \ErrorProcessing \ProcessingErrorAggregatorInterface ;
1113use Magento \ImportExport \Model \History as ModelHistory ;
1214use Magento \Framework \Escaper ;
1315use Magento \Framework \App \ObjectManager ;
16+ use Magento \ImportExport \Model \Import \RenderErrorMessages ;
17+ use Magento \ImportExport \Model \Report \ReportProcessorInterface ;
1418
1519/**
1620 * Import controller
1721 */
1822abstract class ImportResult extends Import
1923{
20- const IMPORT_HISTORY_FILE_DOWNLOAD_ROUTE = '*/history/download ' ;
24+ public const IMPORT_HISTORY_FILE_DOWNLOAD_ROUTE = '*/history/download ' ;
2125
2226 /**
2327 * Limit view errors
2428 */
25- const LIMIT_ERRORS_MESSAGE = 100 ;
29+ public const LIMIT_ERRORS_MESSAGE = 100 ;
2630
2731 /**
28- * @var \Magento\ImportExport\Model\Report\ ReportProcessorInterface
32+ * @var ReportProcessorInterface
2933 */
30- protected $ reportProcessor ;
34+ protected ReportProcessorInterface $ reportProcessor ;
3135
3236 /**
33- * @var \Magento\ImportExport\Model\History
37+ * @var ModelHistory
3438 */
35- protected $ historyModel ;
39+ protected ModelHistory $ historyModel ;
3640
3741 /**
38- * @var \Magento\ImportExport\Helper\ Report
42+ * @var Report
3943 */
40- protected $ reportHelper ;
44+ protected Report $ reportHelper ;
4145
4246 /**
4347 * @var Escaper|null
4448 */
4549 protected $ escaper ;
4650
4751 /**
48- * @param \Magento\Backend\App\Action\Context $context
49- * @param \Magento\ImportExport\Model\Report\ReportProcessorInterface $reportProcessor
50- * @param \Magento\ImportExport\Model\History $historyModel
51- * @param \Magento\ImportExport\Helper\Report $reportHelper
52+ * @var RenderErrorMessages
53+ */
54+ private RenderErrorMessages $ renderErrorMessages ;
55+
56+ /**
57+ * @param Context $context
58+ * @param ReportProcessorInterface $reportProcessor
59+ * @param ModelHistory $historyModel
60+ * @param Report $reportHelper
5261 * @param Escaper|null $escaper
62+ * @param RenderErrorMessages|null $renderErrorMessages
5363 */
5464 public function __construct (
55- \Magento \Backend \App \Action \Context $ context ,
56- \Magento \ImportExport \Model \Report \ReportProcessorInterface $ reportProcessor ,
57- \Magento \ImportExport \Model \History $ historyModel ,
58- \Magento \ImportExport \Helper \Report $ reportHelper ,
59- Escaper $ escaper = null
65+ Context $ context ,
66+ ReportProcessorInterface $ reportProcessor ,
67+ ModelHistory $ historyModel ,
68+ Report $ reportHelper ,
69+ Escaper $ escaper = null ,
70+ ?RenderErrorMessages $ renderErrorMessages = null
6071 ) {
6172 parent ::__construct ($ context );
6273 $ this ->reportProcessor = $ reportProcessor ;
6374 $ this ->historyModel = $ historyModel ;
6475 $ this ->reportHelper = $ reportHelper ;
6576 $ this ->escaper = $ escaper
6677 ?? ObjectManager::getInstance ()->get (Escaper::class);
78+ $ this ->renderErrorMessages = $ renderErrorMessages ??
79+ ObjectManager::getInstance ()->get (RenderErrorMessages::class);
6780 }
6881
6982 /**
7083 * Add Error Messages for Import
7184 *
72- * @param \Magento\Framework\View\Element\ AbstractBlock $resultBlock
85+ * @param AbstractBlock $resultBlock
7386 * @param ProcessingErrorAggregatorInterface $errorAggregator
7487 * @return $this
7588 */
7689 protected function addErrorMessages (
77- \ Magento \ Framework \ View \ Element \ AbstractBlock $ resultBlock ,
90+ AbstractBlock $ resultBlock ,
7891 ProcessingErrorAggregatorInterface $ errorAggregator
7992 ) {
8093 if ($ errorAggregator ->getErrorsCount ()) {
81- $ message = '' ;
82- $ counter = 0 ;
83- $ escapedMessages = [];
84- foreach ($ this ->getErrorMessages ($ errorAggregator ) as $ error ) {
85- $ escapedMessages [] = (++$ counter ) . '. ' . $ this ->escaper ->escapeHtml ($ error );
86- if ($ counter >= self ::LIMIT_ERRORS_MESSAGE ) {
87- break ;
88- }
89- }
90- if ($ errorAggregator ->hasFatalExceptions ()) {
91- foreach ($ this ->getSystemExceptions ($ errorAggregator ) as $ error ) {
92- $ escapedMessages [] = $ this ->escaper ->escapeHtml ($ error ->getErrorMessage ())
93- . ' <a href="#" onclick="$(this).next().show();$(this).hide();return false;"> '
94- . __ ('Show more ' ) . '</a><div style="display:none;"> ' . __ ('Additional data ' ) . ': '
95- . $ this ->escaper ->escapeHtml ($ error ->getErrorDescription ()) . '</div> ' ;
96- }
97- }
9894 try {
99- $ message .= implode ('<br> ' , $ escapedMessages );
10095 $ resultBlock ->addNotice (
101- '<strong> ' . __ ('Following Error(s) has been occurred during importing process: ' ) . '</strong><br> '
102- . '<div class="import-error-wrapper"> ' . __ ('Only the first 100 errors are shown. ' )
103- . '<a href=" '
104- . $ this ->createDownloadUrlImportHistoryFile ($ this ->createErrorReport ($ errorAggregator ))
105- . '"> ' . __ ('Download full report ' ) . '</a><br> '
106- . '<div class="import-error-list"> ' . $ message . '</div></div> '
96+ $ this ->renderErrorMessages ->renderMessages ($ errorAggregator )
10797 );
10898 } catch (\Exception $ e ) {
10999 foreach ($ this ->getErrorMessages ($ errorAggregator ) as $ errorMessage ) {
@@ -118,28 +108,23 @@ protected function addErrorMessages(
118108 /**
119109 * Get all Error Messages from Import Results
120110 *
121- * @param \Magento\ImportExport\Model\Import\ErrorProcessing\ ProcessingErrorAggregatorInterface $errorAggregator
111+ * @param ProcessingErrorAggregatorInterface $errorAggregator
122112 * @return array
123113 */
124114 protected function getErrorMessages (ProcessingErrorAggregatorInterface $ errorAggregator )
125115 {
126- $ messages = [];
127- $ rowMessages = $ errorAggregator ->getRowsGroupedByErrorCode ([], [AbstractEntity::ERROR_CODE_SYSTEM_EXCEPTION ]);
128- foreach ($ rowMessages as $ errorCode => $ rows ) {
129- $ messages [] = $ errorCode . ' ' . __ ('in row(s): ' ) . ' ' . implode (', ' , $ rows );
130- }
131- return $ messages ;
116+ return $ this ->renderErrorMessages ->getErrorMessages ($ errorAggregator );
132117 }
133118
134119 /**
135120 * Get System Generated Exception
136121 *
137122 * @param ProcessingErrorAggregatorInterface $errorAggregator
138- * @return \Magento\ImportExport\Model\Import\ErrorProcessing\ ProcessingError[]
123+ * @return ProcessingError[]
139124 */
140125 protected function getSystemExceptions (ProcessingErrorAggregatorInterface $ errorAggregator )
141126 {
142- return $ errorAggregator -> getErrorsByCode ([AbstractEntity:: ERROR_CODE_SYSTEM_EXCEPTION ] );
127+ return $ this -> renderErrorMessages -> getSystemExceptions ( $ errorAggregator );
143128 }
144129
145130 /**
@@ -150,15 +135,7 @@ protected function getSystemExceptions(ProcessingErrorAggregatorInterface $error
150135 */
151136 protected function createErrorReport (ProcessingErrorAggregatorInterface $ errorAggregator )
152137 {
153- $ this ->historyModel ->loadLastInsertItem ();
154- $ sourceFile = $ this ->reportHelper ->getReportAbsolutePath ($ this ->historyModel ->getImportedFile ());
155- $ writeOnlyErrorItems = true ;
156- if ($ this ->historyModel ->getData ('execution_time ' ) == ModelHistory::IMPORT_VALIDATION ) {
157- $ writeOnlyErrorItems = false ;
158- }
159- $ fileName = $ this ->reportProcessor ->createReport ($ sourceFile , $ errorAggregator , $ writeOnlyErrorItems );
160- $ this ->historyModel ->addErrorReportFile ($ fileName );
161- return $ fileName ;
138+ return $ this ->renderErrorMessages ->createErrorReport ($ errorAggregator );
162139 }
163140
164141 /**
@@ -169,6 +146,6 @@ protected function createErrorReport(ProcessingErrorAggregatorInterface $errorAg
169146 */
170147 protected function createDownloadUrlImportHistoryFile ($ fileName )
171148 {
172- return $ this ->getUrl ( self :: IMPORT_HISTORY_FILE_DOWNLOAD_ROUTE , [ ' filename ' => $ fileName] );
149+ return $ this ->renderErrorMessages -> createDownloadUrlImportHistoryFile ( $ fileName );
173150 }
174151}
0 commit comments