コード例 #1
0
        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);
        }