public void SaveTemplateTypes() { List <ImplementationGuideTemplateType> existingItems = this.tdb.ImplementationGuideTemplateTypes.Where(y => y.ImplementationGuideId == this.ImplementationGuideId) .ToList(); List <ImplementationGuideTemplateType> updatedItems = (from e in existingItems join it in this.TemplateTypes on e.TemplateTypeId equals it.TemplateTypeId select e).ToList(); // Remove template types that don't exist for this IG any more var deletedTemplateTypes = existingItems.Where(y => !this.TemplateTypes.Exists(x => x.TemplateTypeId == y.TemplateTypeId)); foreach (ImplementationGuideTemplateType cIgTemplateType in deletedTemplateTypes) { this.tdb.ImplementationGuideTemplateTypes.Remove(cIgTemplateType); } // Update existing template types for the IG foreach (ImplementationGuideTemplateType cItem in updatedItems) { IGTemplateType cIgTemplateType = this.TemplateTypes.Single(y => y.TemplateTypeId == cItem.TemplateTypeId); cItem.Name = cIgTemplateType.Name; cItem.DetailsText = cIgTemplateType.DetailsText; if (string.IsNullOrEmpty(cItem.Name)) { TemplateType originalTemplateType = this.tdb.TemplateTypes.Single(y => y.Id == cItem.TemplateTypeId); cItem.Name = originalTemplateType.Name; } } // Add new template types for the IG foreach (IGTemplateType cItem in this.TemplateTypes.Where(y => !existingItems.Exists(x => x.TemplateTypeId == y.TemplateTypeId))) { ImplementationGuideTemplateType newIgTemplateType = new ImplementationGuideTemplateType() { TemplateTypeId = cItem.TemplateTypeId, ImplementationGuideId = this.ImplementationGuideId, Name = cItem.Name, DetailsText = cItem.DetailsText }; if (string.IsNullOrEmpty(newIgTemplateType.Name)) { TemplateType originalTemplateType = this.tdb.TemplateTypes.Single(y => y.Id == newIgTemplateType.TemplateTypeId); newIgTemplateType.Name = originalTemplateType.Name; } this.tdb.ImplementationGuideTemplateTypes.Add(newIgTemplateType); } this.tdb.SaveChanges(); }
public IGSettingsManager(IObjectRepository tdb, int implementationGuideId) { this.ImplementationGuideId = implementationGuideId; this.tdb = tdb; ImplementationGuide ig = this.tdb.ImplementationGuides.Single(y => y.Id == implementationGuideId); this.IsPublished = ig.IsPublished(); this.PublishDate = ig.PublishDate; this.settings = tdb.ImplementationGuideSettings .Where(y => y.ImplementationGuideId == implementationGuideId) .ToList(); LoadImplementationGuideType(ig.ImplementationGuideTypeId); foreach (ImplementationGuideTemplateType cIgTemplateType in this.tdb.ImplementationGuideTemplateTypes.Where(y => y.ImplementationGuideId == this.ImplementationGuideId)) { IGTemplateType cItem = this.templateTypes.Single(y => y.TemplateTypeId == cIgTemplateType.TemplateTypeId); cItem.Name = cIgTemplateType.Name; cItem.DetailsText = cIgTemplateType.DetailsText; } }