public List <UcasCampus> ReadCampuses(string folder, IList <UcasInstitution> institutions)
        {
            var file = new FileInfo(Path.Combine(folder, CampusFilename));

            _logger.Information("Reading campus xls file from: " + file.FullName);

            var skipCount = 0;
            var campuses  = new List <UcasCampus>();

            using (var stream = new FileStream(file.FullName, FileMode.Open))
            {
                var wb     = new HSSFWorkbook(stream);
                var sheet  = wb.GetSheetAt(0);
                var header = sheet.GetRow(0);

                var columnMap = header.Cells.ToDictionary(c => c.StringCellValue, c => c.ColumnIndex);
                for (int dataRowIndex = 1; dataRowIndex <= sheet.LastRowNum; dataRowIndex++)
                {
                    if (sheet.GetRow(dataRowIndex) == null)
                    {
                        continue;
                    }

                    var row        = sheet.GetRow(dataRowIndex);
                    var ucasCampus = new UcasCampus
                    {
                        InstCode   = row.GetCell(columnMap["INST_CODE"]).StringCellValue.Trim(),
                        CampusCode = CampusCodeFixer(row.GetCell(columnMap["CAMPUS_CODE"]).StringCellValue),
                        CampusName = row.GetCell(columnMap["CAMPUS_NAME"]).StringCellValue.Trim(),
                        Addr1      = row.GetCell(columnMap["ADDR_1"]).StringCellValue.Trim(),
                        Addr2      = row.GetCell(columnMap["ADDR_2"]).StringCellValue.Trim(),
                        Addr3      = row.GetCell(columnMap["ADDR_3"]).StringCellValue.Trim(),
                        Addr4      = row.GetCell(columnMap["ADDR_4"]).StringCellValue.Trim(),
                        Postcode   = row.GetCell(columnMap["POSTCODE"]).StringCellValue.Trim(),
                        TelNo      = row.GetCell(columnMap["TEL_NO"]).StringCellValue.Trim(),
                        Email      = row.GetCell(columnMap["EMAIL"]).StringCellValue.Trim(),

                        RegionCode = ParseIntCell(row.GetCell(columnMap["REGION_CODE"]).StringCellValue.Trim())
                    };
                    if (!institutions.Any(i => i.InstCode == ucasCampus.InstCode))
                    {
                        skipCount++;
                        _logger.Debug($"Skipped invalid record in {CampusFilename} with inst_code {ucasCampus.InstCode} and campus_code '{ucasCampus.CampusCode}'. "
                                      + $"inst_code not found in {InstFilename}");
                        continue;
                    }
                    campuses.Add(ucasCampus);
                }
            }
            _logger.Information($"{campuses.Count} campuses loaded from xls ({skipCount} skipped due to integrity violations)");
            return(campuses);
        }
Ejemplo n.º 2
0
 private Site ToSite(UcasCampus x)
 {
     return(new Site
     {
         Address1 = x.Addr1,
         Address2 = x.Addr2,
         Address3 = x.Addr3,
         Address4 = x.Addr4,
         Postcode = x.Postcode,
         Code = x.CampusCode,
         LocationName = x.CampusName,
         RegionCode = x.RegionCode,
         CreatedAt = _clock.UtcNow,
         UpdatedAt = _clock.UtcNow,
     });
 }
 public PayloadCampusBuilder()
 {
     _campus = new UcasCampus();
 }