Esempio n. 1
0
        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
            });
        }
Esempio n. 2
0
        public void Before_each_test()
        {
            _registerEntry = new RegisterEntry
            {
                UKPRN              = 10002222,
                ProviderTypeId     = 1,
                OrganisationTypeId = 0,
                LegalName          = "Training Company",
                Status             = "1"
            };

            _validator = new RegisterEntryValidator();
        }