public void CreateUnsortedChapter(string folderName, Vertical[] verticals) { if (CourseWithChapters.Chapters.All(x => x.UrlName != "Unsorted")) { var chapters = new List<Chapter>(CourseWithChapters.Chapters); var newChapter = new Chapter("Unsorted", "Unsorted", new[] { new Sequential(Utils.NewNormalizedGuid(), "Unsorted " + DateTime.Now, verticals) }); chapters.Add(newChapter); CourseWithChapters.Chapters = chapters.ToArray(); CourseWithChapters.ChapterReferences = CourseWithChapters.Chapters.Select(x => new ChapterReference { UrlName = x.UrlName }).ToArray(); File.WriteAllText(string.Format("{0}/course/{1}.xml", folderName, CourseWithChapters.UrlName), CourseWithChapters.XmlSerialize()); newChapter.Save(folderName); } else { var testChapter = CourseWithChapters.Chapters.Single(x => x.UrlName == "Unsorted"); var sequentials = new List<Sequential>(testChapter.Sequentials); var newSequential = new Sequential(Utils.NewNormalizedGuid(), "Unsorted " + DateTime.Now, verticals); sequentials.Add(newSequential); testChapter.Sequentials = sequentials.ToArray(); testChapter.SequentialReferences = testChapter.Sequentials.Select(x => new SequentialReference { UrlName = x.UrlName }).ToArray(); File.WriteAllText(string.Format("{0}/chapter/{1}.xml", folderName, testChapter.UrlName), testChapter.XmlSerialize()); newSequential.Save(folderName); } }
private void PatchInstructorsNotes(EdxCourse edxCourse, Course ulearnCourse, string olxPath) { var ulearnUnits = ulearnCourse.GetUnits().ToList(); foreach (var chapter in edxCourse.CourseWithChapters.Chapters) { var chapterNote = ulearnCourse.InstructorNotes.FirstOrDefault(x => x.UnitName == chapter.DisplayName); if (chapterNote == null) continue; var unitIndex = ulearnUnits.IndexOf(chapterNote.UnitName); var displayName = "Заметки преподавателю"; var sequentialId = string.Format("{0}-{1}-{2}", ulearnCourse.Id, unitIndex, "note-seq"); var verticalId = string.Format("{0}-{1}-{2}", ulearnCourse.Id, unitIndex, "note-vert"); var mdBlockId = string.Format("{0}-{1}-{2}", ulearnCourse.Id, unitIndex, "note-md"); var sequentialNote = new Sequential(sequentialId, displayName, new[] { new Vertical(verticalId, displayName, new[] { new MdBlock(chapterNote.Markdown).ToEdxComponent(mdBlockId, displayName, ulearnCourse.GetDirectoryByUnitName(chapterNote.UnitName)) }) }) { VisibleToStaffOnly = true }; if (!File.Exists(string.Format("{0}/sequential/{1}.xml", olxPath, sequentialNote.UrlName))) { var sequentials = chapter.Sequentials.ToList(); sequentials.Add(sequentialNote); new Chapter(chapter.UrlName, chapter.DisplayName, chapter.Start, sequentials.ToArray()).Save(olxPath); } sequentialNote.Save(olxPath); } }
public Chapter(string urlName, string displayName, Sequential[] sequentials) { DisplayName = displayName; UrlName = urlName; Sequentials = sequentials; SequentialReferences = sequentials.Select(x => x.GetReference()).ToArray(); }
public void CreateUnsortedChapter(string folderName, Vertical[] verticals) { if (CourseWithChapters.Chapters.All(x => x.UrlName != "Unsorted")) { var chapters = new List<Chapter>(CourseWithChapters.Chapters); var newChapter = new Chapter("Unsorted", "Unsorted", DateTime.MaxValue, new[] { new Sequential(Utils.NewNormalizedGuid(), "Unsorted " + DateTime.Now, verticals) { VisibleToStaffOnly = true } }); chapters.Add(newChapter); CourseWithChapters.Chapters = chapters.ToArray(); CourseWithChapters.ChapterReferences = CourseWithChapters.Chapters.Select(x => new ChapterReference { UrlName = x.UrlName }).ToArray(); File.WriteAllText(string.Format("{0}/course/{1}.xml", folderName, CourseWithChapters.UrlName), CourseWithChapters.XmlSerialize()); newChapter.Save(folderName); } else { var unsortedChapter = CourseWithChapters.Chapters.Single(x => x.UrlName == "Unsorted"); var filename = string.Format("{0}/chapter/{1}.xml", folderName, unsortedChapter.UrlName); var chapterXml = XDocument.Load(filename).Root ?? new XElement("chapter"); var newSequential = new Sequential(Utils.NewNormalizedGuid(), "Unsorted " + DateTime.Now, verticals); chapterXml.Add(new XElement("sequential", new XAttribute("url_name", newSequential.UrlName))); chapterXml.Save(filename); new FileInfo(filename).RemoveXmlDeclaration(); newSequential.Save(folderName); } }