private static void HandleRequiredValueError(Action <ImportProgressInfo> progressCallback, ImportProgressInfo importProgress, ICsvPriceImportReporter reporter, CsvContext context, ImportErrorsContext errorsContext) { var fieldName = context.Reader.HeaderRecord[context.Reader.CurrentIndex]; var requiredFields = CsvPriceImportHelper.GetImportPriceRequiredValueColumns(); var missedValueColumns = new List <string>(); for (var i = 0; i < context.Reader.HeaderRecord.Length; i++) { if (requiredFields.Contains(context.Reader.HeaderRecord[i], StringComparer.InvariantCultureIgnoreCase) && context.Parser.Record[i].IsNullOrEmpty()) { missedValueColumns.Add(context.Reader.HeaderRecord[i]); } } var importError = new ImportError { Error = $"The required value in column {fieldName} is missing.", RawRow = context.Parser.RawRecord }; if (missedValueColumns.Count > 1) { importError.Error = $"The required values in columns: {string.Join(", ", missedValueColumns)} - are missing."; } reporter.Write(importError); errorsContext.ErrorsRows.Add(context.Parser.Row); HandleError(progressCallback, importProgress); }
private static void HandleNotClosedQuoteError(Action <ImportProgressInfo> progressCallback, ImportProgressInfo importProgress, ICsvPriceImportReporter reporter, CsvContext context, ImportErrorsContext errorsContext) { var importError = new ImportError { Error = "This row has invalid data. Quotes should be closed.", RawRow = context.Parser.RawRecord }; reporter.Write(importError); errorsContext.ErrorsRows.Add(context.Parser.Row); HandleError(progressCallback, importProgress); }
private static void HandleWrongValueError(Action <ImportProgressInfo> progressCallback, ImportProgressInfo importProgress, ICsvPriceImportReporter reporter, CsvContext context, ImportErrorsContext errorsContext) { var invalidFieldName = context.Reader.HeaderRecord[context.Reader.CurrentIndex]; var importError = new ImportError { Error = $"This row has invalid value in the column {invalidFieldName}.", RawRow = context.Parser.RawRecord }; reporter.Write(importError); errorsContext.ErrorsRows.Add(context.Parser.Row); HandleError(progressCallback, importProgress); }
private static void HandleMissedColumnError(Action <ImportProgressInfo> progressCallback, ImportProgressInfo importProgress, ICsvPriceImportReporter reporter, CsvContext context, ImportErrorsContext errorsContext) { var headerColumns = context.Reader.HeaderRecord; var recordFields = context.Parser.Record; var missedColumns = headerColumns.Skip(recordFields.Length).ToArray(); var error = $"This row has next missing columns: {string.Join(", ", missedColumns)}."; var importError = new ImportError { Error = error, RawRow = context.Parser.RawRecord }; reporter.Write(importError); errorsContext.ErrorsRows.Add(context.Parser.Row); HandleError(progressCallback, importProgress); }
private static void HandleBadDataError(Action <ImportProgressInfo> progressCallback, ImportProgressInfo importProgress, ICsvPriceImportReporter reporter, CsvContext context, ImportErrorsContext errorsContext) { var importError = new ImportError { Error = "This row has invalid data. The data after field with not escaped quote was lost.", RawRow = context.Parser.RawRecord }; reporter.Write(importError); if (context.Reader is VcCsvReader vcCsvReader) { vcCsvReader.IsFieldBadData = true; } errorsContext.ErrorsRows.Add(context.Parser.Row); HandleError(progressCallback, importProgress); }