private void UpdateCustomSchematron(ImplementationGuide implementationGuide, ImportImplementationGuide importImplementationGuide) { var allCustomSchematrons = implementationGuide.SchematronPatterns.ToList(); // Remove all first foreach (var customSchematron in allCustomSchematrons) { this.tdb.ImplementationGuideSchematronPatterns.DeleteObject(customSchematron); } // Add all in import as new foreach (var importCustomSchematron in importImplementationGuide.CustomSchematron) { var foundSchematronPattern = new ImplementationGuideSchematronPattern(); foundSchematronPattern.PatternId = importCustomSchematron.patternId; implementationGuide.SchematronPatterns.Add(foundSchematronPattern); if (foundSchematronPattern.Phase != importCustomSchematron.phase) { foundSchematronPattern.Phase = importCustomSchematron.phase; } if (foundSchematronPattern.PatternContent != importCustomSchematron.Rule) { foundSchematronPattern.PatternContent = importCustomSchematron.Rule; } } }
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, Identifier = ig.Identifier }; // 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); } // Copy custom schematron foreach (var cSchematron in ig.SchematronPatterns) { var newSchematron = new ImplementationGuideSchematronPattern() { PatternId = cSchematron.PatternId, PatternContent = cSchematron.PatternContent, Phase = cSchematron.Phase }; newIg.SchematronPatterns.Add(newSchematron); } this.tdb.ImplementationGuides.Add(newIg); 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 })); }