public TemplateMetaDataModel GetMetaData(int templateId) { if (!CheckPoint.Instance.GrantEditTemplate(templateId)) { throw new AuthorizationException("You do not have permission to edit this template"); } DB.Template lTemplate = tdb.Templates.Single(t => t.Id == templateId); SimpleSchema schema = SimplifiedSchemaContext.GetSimplifiedSchema(HttpContext.Current.Application, lTemplate.ImplementationGuideType); schema = schema.GetSchemaFromContext(lTemplate.PrimaryContextType); var plugin = lTemplate.OwningImplementationGuide.ImplementationGuideType.GetPlugin(); var validator = plugin.GetValidator(this.tdb); TemplateMetaDataModel lViewModel = new TemplateMetaDataModel() { Bookmark = lTemplate.Bookmark, PrimaryContext = lTemplate.PrimaryContext, PrimaryContextType = lTemplate.PrimaryContextType, Description = lTemplate.Description, Notes = lTemplate.Notes, Id = lTemplate.Id, OwningImplementationGuideId = lTemplate.OwningImplementationGuideId, ImpliedTemplateId = lTemplate.ImpliedTemplateId, IsOpen = lTemplate.IsOpen, Name = lTemplate.Name, Oid = lTemplate.Oid, StatusId = lTemplate.StatusId, TemplateTypeId = lTemplate.TemplateTypeId, AuthorId = lTemplate.AuthorId, Author = string.Format("{0} {1}", lTemplate.Author.FirstName, lTemplate.Author.LastName), OrganizationName = lTemplate.OrganizationName, MoveUrl = lTemplate.GetMoveUrl(), TemplateTypeAbbreviation = lTemplate.TemplateType.GetAbbreviation(), Locked = lTemplate.OwningImplementationGuide.IsPublished() }; // Parse the validation results for the template lViewModel.ValidationResults = (from vr in validator.ValidateTemplate(lTemplate, schema) select new { ConstraintNumber = vr.ConstraintNumber, Level = vr.Level.ToString(), Message = vr.Message }); lViewModel.Extensions = (from te in lTemplate.Extensions select new TemplateMetaDataModel.TemplateExtension() { Identifier = te.Identifier, Type = te.Type, Value = te.Value }); if (lTemplate.PreviousVersion != null) { lViewModel.PreviousVersionLink = "/TemplateManagement/View/" + lTemplate.PreviousVersion.Oid; lViewModel.PreviousVersionName = lTemplate.PreviousVersion.Name; lViewModel.PreviousVersionOid = lTemplate.PreviousVersion.Oid; } // Contained By Templates List <TemplateMetaDataModel.TemplateReference> containedByTemplates = new List <TemplateMetaDataModel.TemplateReference>(); lViewModel.ContainedByTemplates = containedByTemplates; var containingConstraints = (from tcr in this.tdb.TemplateConstraintReferences join tc in this.tdb.TemplateConstraints on tcr.TemplateConstraintId equals tc.Id where tcr.ReferenceIdentifier == lTemplate.Oid && tcr.ReferenceType == ConstraintReferenceTypes.Template select tc); foreach (var containingConstraint in containingConstraints) { TemplateMetaDataModel.TemplateReference newReference = new TemplateMetaDataModel.TemplateReference() { EditUrl = containingConstraint.Template.GetEditUrl(), ViewUrl = containingConstraint.Template.GetViewUrl(), Name = containingConstraint.Template.Name, ImplementationGuide = containingConstraint.Template.OwningImplementationGuide.GetDisplayName() }; containedByTemplates.Add(newReference); } // Implied By Templates List <TemplateMetaDataModel.TemplateReference> impliedByTemplates = new List <TemplateMetaDataModel.TemplateReference>(); lViewModel.ImpliedByTemplates = impliedByTemplates; foreach (Template implyingTemplate in this.tdb.Templates.Where(y => y.ImpliedTemplateId == templateId)) { TemplateMetaDataModel.TemplateReference newReference = new TemplateMetaDataModel.TemplateReference() { EditUrl = implyingTemplate.GetEditUrl(), ViewUrl = implyingTemplate.GetViewUrl(), Name = implyingTemplate.Name, ImplementationGuide = implyingTemplate.OwningImplementationGuide.GetDisplayName() }; impliedByTemplates.Add(newReference); } return(lViewModel); }