예제 #1
0
        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();
        }
예제 #2
0
        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;
            }
        }