public CsvImportResult ParseCsvFile(StreamReader csvFileReader) { List <RegisterEntry> entries = new List <RegisterEntry>(); List <string> errorLog = new List <string>(); using (var csvReader = new CsvReader(csvFileReader)) { csvReader.Configuration.CultureInfo = CultureInfo.CreateSpecificCulture("en-GB"); int rowNumber = 1; // include the header while (csvReader.Read()) { try { rowNumber++; var record = csvReader.GetRecord <RegisterEntry>(); RegisterEntryValidator validator = new RegisterEntryValidator(); RegisterEntryValidationResult validationResult = validator.ValidateRegisterEntry(record); if (!validationResult.IsValid) { var validationErrors = new List <string>(); validationErrors.Add("Error on row " + rowNumber); foreach (var errorMessage in validationResult.ValidationMessages) { validationErrors.Add(errorMessage); } LogErrors(errorLog, validationErrors); continue; } entries.Add(record); } catch (TypeConverterException typeConverterException) { var conversionErrors = new List <string>(); conversionErrors.Add("Error on row " + typeConverterException.ReadingContext.Row); conversionErrors.Add("Invalid data:" + typeConverterException.ReadingContext.RawRecord); LogErrors(errorLog, conversionErrors); } catch (HeaderValidationException headerValidationException) { throw new RegisterImportException(headerValidationException.Message) { ImportErrorMessage = $"Invalid header at index {headerValidationException.HeaderNameIndex}" }; } } } return(new CsvImportResult { Entries = entries, ErrorLog = errorLog }); }
public void Before_each_test() { _registerEntry = new RegisterEntry { UKPRN = 10002222, ProviderTypeId = 1, OrganisationTypeId = 0, LegalName = "Training Company", Status = "1" }; _validator = new RegisterEntryValidator(); }