public List <UcasCourse> ReadCourses(string folder, IList <UcasCampus> campuses) { var file = new FileInfo(Path.Combine(folder, CrseFilename)); _logger.Information("Reading course xls file from: " + file.FullName); var courses = new List <UcasCourse>(); var skipped = 0; 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 accreditingProvider = row.GetCell(columnMap["ACCREDITING_PROVIDER"]).StringCellValue.Trim(); var ucasCourse = new UcasCourse { InstCode = row.GetCell(columnMap["INST_CODE"]).StringCellValue.Trim(), CrseCode = row.GetCell(columnMap["CRSE_CODE"]).StringCellValue.Trim(), CrseTitle = row.GetCell(columnMap["CRSE_TITLE"]).StringCellValue.Trim(), Studymode = row.GetCell(columnMap["STUDYMODE"]).StringCellValue.Trim(), Age = row.GetCell(columnMap["AGE"]).StringCellValue.Trim(), CampusCode = CampusCodeFixer(row.GetCell(columnMap["CAMPUS_CODE"]).StringCellValue), ProfpostFlag = row.GetCell(columnMap["PROFPOST_FLAG"]).StringCellValue.Trim(), ProgramType = row.GetCell(columnMap["PROGRAM_TYPE"]).StringCellValue.Trim(), AccreditingProvider = accreditingProvider == "" ? null : accreditingProvider, CrseOpenDate = row.GetCell(columnMap["CRSE_OPEN_DATE"]).StringCellValue.Trim(), Publish = row.GetCell(columnMap["PUBLISH"]).StringCellValue.Trim(), Status = row.GetCell(columnMap["STATUS"]).StringCellValue.Trim(), VacStatus = row.GetCell(columnMap["VAC_STATUS"]).StringCellValue.Trim(), StartYear = row.GetCell(columnMap["YEAR_CODE"]).StringCellValue.Trim(), StartMonth = row.GetCell(columnMap["CRSE_MONTH"]).StringCellValue.Trim(), Modular = row.GetCell(columnMap["MODULAR"]).StringCellValue.Trim(), English = ParseIntCell(row.GetCell(columnMap["ENGLISH"]).StringCellValue.Trim()), Maths = ParseIntCell(row.GetCell(columnMap["MATHS"]).StringCellValue.Trim()), Science = ParseIntCell(row.GetCell(columnMap["SCIENCE"]).StringCellValue.Trim()) }; if (!campuses.Any(c => c.InstCode == ucasCourse.InstCode && c.CampusCode == ucasCourse.CampusCode)) { skipped++; _logger.Debug($"Skipped invalid record in {CrseFilename} with crse_code {ucasCourse.CrseCode}. " + $"{CampusFilename} didn't contain a valid record with inst_code {ucasCourse.InstCode} and campus_code '{ucasCourse.CampusCode}'"); continue; } courses.Add(ucasCourse); } } _logger.Information($"{courses.Count} courses loaded from xls ({skipped} skipped)"); return(courses); }
private Course LoadCourse(UcasCourse course) { Provider provider = new Provider { ProviderCode = course.InstCode }; var providers = new List <Provider> { provider }; if (!string.IsNullOrWhiteSpace(course.AccreditingProvider)) { providers.Add(new Provider { ProviderCode = course.AccreditingProvider }); } return(GetCourseLoader(providers).LoadCourses(provider, new List <UcasCourse> { course }, new List <UcasCourseSubject>(), new List <Site> { new Site { Provider = provider, Code = course.CampusCode } }).Single()); }
public PayloadCourseBuilder() { _course = new UcasCourse(); }