Beispiel #1
0
        /// <summary>
        /// Slims an AF SDK AFAttributeTemplate
        /// </summary>
        /// <param name="attributeTemplate">The template to be slimmed</param>
        /// <param name="attributeInstance">Optional attribute instance to provide data reference information if not set on the template</param>
        /// <returns></returns>
        public static AFAttributeTemplateSlim ToSlim(this AFAttributeTemplateDTO attributeTemplate, AFAttributeDTO attributeInstance = null)
        {
            string pathRelativeToElement = attributeTemplate.GetPathRelativeToElement();

            AFAttributeTemplateSlim slim = new AFAttributeTemplateSlim()
            {
                Id            = attributeTemplate.Id,
                FullName      = pathRelativeToElement,
                Name          = attributeTemplate.Name,
                Description   = attributeTemplate.Description,
                IsTopLevel    = !pathRelativeToElement.Contains('|'),
                TypeName      = attributeTemplate.Type,
                TypeQualifier = attributeTemplate.TypeQualifier,
                IsHidden      = attributeTemplate.IsHidden,
                IsStatic      = string.IsNullOrWhiteSpace(attributeTemplate.DataReferencePlugIn) && string.IsNullOrWhiteSpace(attributeInstance.DataReferencePlugIn),
                HasChildren   = attributeTemplate.HasChildren,
                CategoryNames = attributeTemplate.CategoryNames
            };

            return(slim);
        }
        private async Task <List <AFAttributeTemplateDTO> > GetAllAttributeTemplateDTOs(AFAttributeTemplateDTO attributeTemplateDTO)
        {
            List <AFAttributeTemplateDTO> selfAndChildren = new List <AFAttributeTemplateDTO>()
            {
                attributeTemplateDTO
            };

            if (attributeTemplateDTO.HasChildren)
            {
                List <AFAttributeTemplateDTO> children = await GetImmediateChildAttributeTemplateDTOsAsync(attributeTemplateDTO.WebId);

                foreach (AFAttributeTemplateDTO child in children)
                {
                    List <AFAttributeTemplateDTO> childAndAllDescendants = await GetAllAttributeTemplateDTOs(child);

                    selfAndChildren.AddRange(childAndAllDescendants);
                }
            }
            return(selfAndChildren);
        }