private void UpdateVolume1(ImplementationGuide implementationGuide, IGSettingsManager igSettings, ImportImplementationGuide importImplementationGuide) { if (importImplementationGuide.Volume1 == null) { igSettings.SaveSetting(IGSettingsManager.SettingProperty.Volume1Html, string.Empty); this.RemoveVolume1Sections(implementationGuide); return; } if (importImplementationGuide.Volume1.Items.Count == 1 && importImplementationGuide.Volume1.Items.First() is string) { this.RemoveVolume1Sections(implementationGuide); igSettings.SaveSetting(IGSettingsManager.SettingProperty.Volume1Html, importImplementationGuide.Volume1.Items.First() as string); } else if (importImplementationGuide.Volume1.Items.Count > 0) { igSettings.SaveSetting(IGSettingsManager.SettingProperty.Volume1Html, string.Empty); foreach (ImportImplementationGuideSection importSection in importImplementationGuide.Volume1.Items) { if (importSection.Heading == null) { throw new ArgumentException("All implementation guide sections must have a heading"); } ImplementationGuideSection newSection = new ImplementationGuideSection() { Heading = importSection.Heading.Title, Level = importSection.Heading.Level, Order = implementationGuide.Sections.Count + 1 }; implementationGuide.Sections.Add(newSection); } } }
protected override void ProcessRecord() { if (!string.IsNullOrEmpty(this.RootDirectory)) { var igDirectories = Directory.GetDirectories(this.RootDirectory); foreach (var igDirectory in igDirectories) { FileInfo igDirectoryInfo = new FileInfo(igDirectory); int implementationGuideId = Int32.Parse(igDirectoryInfo.Name); ImplementationGuide ig = this.tdb.ImplementationGuides.Single(y => y.Id == implementationGuideId); var sectionFiles = Directory.GetFiles(igDirectory, "*.txt"); foreach (var sectionFile in sectionFiles) { FileInfo sectionFileInfo = new FileInfo(sectionFile); string sectionName = sectionFileInfo.Name.Substring(0, sectionFileInfo.Name.Length - sectionFileInfo.Extension.Length); ImplementationGuideSection section = ig.Sections.Single(y => y.Heading.Trim().ToLower() == sectionName.Trim().ToLower()); section.Content = File.ReadAllText(sectionFile); this.WriteVerbose("Updating implementation guide " + ig.Id + " section " + section.Id + " (" + section.Heading + ")"); } } this.tdb.SaveChanges(); } }
public ActionResult NewVersion(int implementationGuideId) { if (!CheckPoint.Instance.GrantEditImplementationGuide(implementationGuideId)) { throw new AuthorizationException("You do not have permissions to edit this implementation guide!"); } if (this.tdb.ImplementationGuides.Count(y => y.PreviousVersionImplementationGuideId == implementationGuideId) > 0) { throw new Exception("This implementation guide already has a new version."); } ImplementationGuide ig = this.tdb.ImplementationGuides.Single(y => y.Id == implementationGuideId); if (!ig.IsPublished()) { throw new Exception("Cannot version an implementation guide that has not been published"); } ImplementationGuide newIg = new ImplementationGuide() { Name = ig.Name, ImplementationGuideType = ig.ImplementationGuideType, Organization = ig.Organization, PreviousVersionImplementationGuideId = ig.Id, PublishStatus = PublishStatus.GetDraftStatus(this.tdb), Version = ig.Version + 1, WebReadmeOverview = ig.WebReadmeOverview, WebDescription = ig.WebDescription }; // Copy permissions foreach (var cPermission in ig.Permissions) { ImplementationGuidePermission newPermission = new ImplementationGuidePermission() { GroupId = cPermission.GroupId, UserId = cPermission.UserId, Type = cPermission.Type, Permission = cPermission.Permission }; newIg.Permissions.Add(newPermission); } // Copy settings foreach (var cSetting in ig.Settings) { ImplementationGuideSetting newSetting = new ImplementationGuideSetting() { PropertyName = cSetting.PropertyName, PropertyValue = cSetting.PropertyValue }; newIg.Settings.Add(newSetting); } // Copy IG Template Types foreach (var cTemplateType in ig.TemplateTypes) { ImplementationGuideTemplateType newTemplateType = new ImplementationGuideTemplateType() { TemplateTypeId = cTemplateType.TemplateTypeId, Name = cTemplateType.Name, DetailsText = cTemplateType.DetailsText }; newIg.TemplateTypes.Add(newTemplateType); } // Copy volume 1 foreach (var cSection in ig.Sections) { var newSection = new ImplementationGuideSection() { Content = cSection.Content, Heading = cSection.Heading, Level = cSection.Level, Order = cSection.Order }; newIg.Sections.Add(newSection); } this.tdb.SaveChanges(); IGSettingsManager igSettings = new IGSettingsManager(this.tdb, implementationGuideId); IGSettingsManager newIgSettings = new IGSettingsManager(this.tdb, newIg.Id); var cardinalityAtLeastOne = igSettings.GetSetting(IGSettingsManager.SettingProperty.CardinalityAtLeastOne); var cardinalityOneToOne = igSettings.GetSetting(IGSettingsManager.SettingProperty.CardinalityOneToOne); var cardinalityZero = igSettings.GetSetting(IGSettingsManager.SettingProperty.CardinalityZero); var cardinalityZeroOrMore = igSettings.GetSetting(IGSettingsManager.SettingProperty.CardinalityZeroOrMore); var cardinalityZeroToOne = igSettings.GetSetting(IGSettingsManager.SettingProperty.CardinalityZeroToOne); var categories = igSettings.GetSetting(IGSettingsManager.SettingProperty.Categories); var useConsolidationConstraintFormat = igSettings.GetBoolSetting(IGSettingsManager.SettingProperty.UseConsolidatedConstraintFormat); var volume1Html = igSettings.GetSetting(IGSettingsManager.SettingProperty.Volume1Html); if (!string.IsNullOrEmpty(cardinalityAtLeastOne)) { newIgSettings.SaveSetting(IGSettingsManager.SettingProperty.CardinalityAtLeastOne, cardinalityAtLeastOne); } if (!string.IsNullOrEmpty(cardinalityOneToOne)) { newIgSettings.SaveSetting(IGSettingsManager.SettingProperty.CardinalityZero, cardinalityZero); } if (!string.IsNullOrEmpty(cardinalityZeroOrMore)) { newIgSettings.SaveSetting(IGSettingsManager.SettingProperty.CardinalityZeroOrMore, cardinalityZeroOrMore); } if (!string.IsNullOrEmpty(cardinalityZeroToOne)) { newIgSettings.SaveSetting(IGSettingsManager.SettingProperty.CardinalityZeroToOne, cardinalityZeroToOne); } if (!string.IsNullOrEmpty(categories)) { newIgSettings.SaveSetting(IGSettingsManager.SettingProperty.Categories, categories); } if (!string.IsNullOrEmpty(volume1Html)) { newIgSettings.SaveSetting(IGSettingsManager.SettingProperty.Volume1Html, volume1Html); } newIgSettings.SaveBoolSetting(IGSettingsManager.SettingProperty.UseConsolidatedConstraintFormat, useConsolidationConstraintFormat); return(Json(new { ImplementationGuideId = newIg.Id })); }