public Course LoadCourse(DirectoryInfo dir) { var courseId = dir.Name; var courseXmls = dir.GetFiles("course.xml", SearchOption.AllDirectories).ToList(); if (courseXmls.Count == 1) { dir = courseXmls[0].Directory; } else { dir = dir.HasSubdirectory("Slides") ? dir.Subdirectory("Slides") : dir; } var settings = CourseSettings.Load(dir); if (string.IsNullOrEmpty(settings.Title)) { settings.Title = GetCourseTitleFromFile(dir); } var units = LoadUnits(dir, settings).ToList(); var slides = units.SelectMany(u => u.Slides).ToList(); CheckDuplicateSlideIds(slides); AddDefaultScoringGroupIfNeeded(units, slides, settings); CalculateScoringGroupScores(units, settings); return(new Course(courseId, units, settings, dir)); }
public Course LoadCourse(DirectoryInfo dir) { var courseId = dir.Name; dir = dir.HasSubdirectory("Slides") ? dir.Subdirectory("Slides") : dir; var settings = CourseSettings.Load(dir); var slides = LoadSlides(dir, settings).ToArray(); CheckDuplicateSlideIds(slides); var notes = LoadInstructorNotes(dir, courseId); var title = settings.Title ?? GetTitle(dir); return(new Course(courseId, title, slides, notes, settings, dir)); }
public Course LoadCourse(DirectoryInfo dir) { var courseId = dir.Name; var courseXmls = dir.GetFiles("course.xml", SearchOption.AllDirectories).ToList(); if (courseXmls.Count == 1) { dir = courseXmls[0].Directory; } else { dir = dir.HasSubdirectory("Slides") ? dir.GetSubdirectory("Slides") : dir; } var settings = CourseSettings.Load(dir); if (string.IsNullOrEmpty(settings.Title)) { try { settings.Title = GetCourseTitleFromFile(dir); } catch (Exception e) { throw new CourseLoadingException( "Не удалось прочитать настройки курса. Скорее всего, отсутствует или неправильно заполнен файл course.xml." ); } } var units = LoadUnits(dir, settings, courseId).ToList(); var slides = units.SelectMany(u => u.Slides).ToList(); CheckDuplicateSlideIds(slides); AddDefaultScoringGroupIfNeeded(units, slides, settings); CalculateScoringGroupScores(units, settings); return(new Course(courseId, units, settings, dir)); }