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); }
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(); }