private void SaveSequentialContainingSubverticals(EdxCourse course, IEnumerable<Vertical> verticalsToAdd, Vertical afterThisVertical) { var sequential = course.GetSequentialContainingVertical(afterThisVertical.UrlName); var filename = string.Format("{0}/sequential/{1}.xml", OlxPath, sequential.UrlName); var sequentialXml = XDocument.Load(filename).Root ?? new XElement("sequential"); var refs = sequentialXml.Elements("vertical").ToList(); var insertIndex = refs .Select((v, i) => new {urlName = v.Attribute("url_name").Value, i}) .First(v => v.urlName == afterThisVertical.UrlName).i + 1; refs.InsertRange(insertIndex, verticalsToAdd.Select(v => new XElement("vertical", new XAttribute("url_name", v.UrlName)))); sequentialXml.ReplaceNodes(refs); sequentialXml.Save(filename); new FileInfo(filename).RemoveXmlDeclaration(); }
private void SaveSequentialContainingSubverticals(EdxCourse course, IEnumerable<Vertical> subverticals, Vertical first) { var sequential = course.GetSequentialContainingVertical(first.UrlName); var verticalReferences = sequential.VerticalReferences.ToList(); var firstReference = verticalReferences.Single(x => x.UrlName == first.UrlName); verticalReferences.InsertRange( verticalReferences.IndexOf(firstReference) + 1, subverticals.Select(x => new VerticalReference { UrlName = x.UrlName }) ); sequential.VerticalReferences = verticalReferences.ToArray(); File.WriteAllText(string.Format("{0}/sequential/{1}.xml", olxPath, sequential.UrlName), sequential.XmlSerialize()); }
private void SaveSequentialContainingSubverticals(EdxCourse course, IEnumerable <Vertical> verticalsToAdd, Vertical afterThisVertical) { var sequential = course.GetSequentialContainingVertical(afterThisVertical.UrlName); var filename = string.Format("{0}/sequential/{1}.xml", OlxPath, sequential.UrlName); var sequentialXml = XDocument.Load(filename).Root ?? new XElement("sequential"); var refs = sequentialXml.Elements("vertical").ToList(); var insertIndex = refs .Select((v, i) => new { urlName = v.Attribute("url_name").Value, i }) .First(v => v.urlName == afterThisVertical.UrlName).i + 1; refs.InsertRange(insertIndex, verticalsToAdd.Select(v => new XElement("vertical", new XAttribute("url_name", v.UrlName)))); sequentialXml.ReplaceNodes(refs); sequentialXml.Save(filename); new FileInfo(filename).RemoveXmlDeclaration(); }