コード例 #1
0
        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();
 }