public async Task <AFElementTemplateSlim> GetElementTemplateSlimAsync(AFElementTemplateDTO elementTemplateDTO, AFElementDTO elementDTO) { List <AFAttributeTemplateDTO> attributeTemplates = await GetAllAttributeTemplateDTOsAsync(elementTemplateDTO); List <AFAttributeDTO> attributeInstances = await GetAllAttributeDTOsAsync(elementDTO); return(elementTemplateDTO.ToSlim(attributeTemplates, attributeInstances)); }
private async Task <List <AFAttributeTemplateDTO> > GetTopLevelAttributeTemplateDTOsAsync(AFElementTemplateDTO elementTemplateDTO) { List <AFAttributeTemplateDTO> allTopLevelAttributes = new List <AFAttributeTemplateDTO>(); string requestUri = string.Format("elementtemplates/{0}/attributetemplates", elementTemplateDTO.WebId); List <AFAttributeTemplateDTO> topLevelAttributes = await GetObjectAsync <ItemCollectionDTO <AFAttributeTemplateDTO> >(requestUri); //Recurse to read attributes from the chain of base templates if (elementTemplateDTO.HasBaseTemplate) { AFElementTemplateDTO baseTemplateDTO = await GetObjectAsync <AFElementTemplateDTO>(elementTemplateDTO.BaseTemplateUri); List <AFAttributeTemplateDTO> baseAttributes = await GetTopLevelAttributeTemplateDTOsAsync(baseTemplateDTO); topLevelAttributes.AddRange(baseAttributes); } return(topLevelAttributes); }
/// <summary> /// Slims an AF SDK AFElementTemplate /// </summary> /// <param name="elementTemplate">The template to be slimmed</param> /// <param name="attributeTemplates">The template's attributes</param> /// <param name="attributeInstances">Optional attribute instances to provide data reference information if not set on the template</param> /// <returns></returns> public static AFElementTemplateSlim ToSlim(this AFElementTemplateDTO elementTemplate, IEnumerable <AFAttributeTemplateDTO> attributeTemplates, IEnumerable <AFAttributeDTO> attributeInstances = null) { //Populate element template AFElementTemplateSlim slim = new AFElementTemplateSlim() { Id = elementTemplate.Id, Name = elementTemplate.Name, Description = elementTemplate.Description, InstanceTypeName = elementTemplate.InstanceType, Path = elementTemplate.Path }; //Populate attribute templates var attributeInstancesByFullName = attributeInstances.ToDictionary(a => a.GetPathRelativeToElement()); var attributeTemplatesByFullName = attributeTemplates.ToDictionary(a => a.GetPathRelativeToElement()); slim.AllAttributes = attributeTemplatesByFullName.Select(kvp => kvp.Value.ToSlim(attributeInstancesByFullName[kvp.Key])).ToList(); return(slim); }
private async Task <List <AFAttributeTemplateDTO> > GetAllAttributeTemplateDTOsAsync(AFElementTemplateDTO elementTemplateDTO) { List <AFAttributeTemplateDTO> topLevelAttributes = await GetTopLevelAttributeTemplateDTOsAsync(elementTemplateDTO).ConfigureAwait(false); List <Task <List <AFAttributeTemplateDTO> > > attributeQueryTasks = new List <Task <List <AFAttributeTemplateDTO> > >(); foreach (AFAttributeTemplateDTO topLevelAttribute in topLevelAttributes) { Task <List <AFAttributeTemplateDTO> > attributeQueryTask = GetAllAttributeTemplateDTOs(topLevelAttribute); attributeQueryTasks.Add(attributeQueryTask); } IEnumerable <List <AFAttributeTemplateDTO> > attributeQueryTaskResults = await Task.WhenAll <List <AFAttributeTemplateDTO> >(attributeQueryTasks).ConfigureAwait(false); return(attributeQueryTaskResults.SelectMany(aq => aq).ToList()); }
public async Task <AFElementTemplateSlim> GetElementTemplateSlimAsync(string templateAbsolutePath, AFElementDTO elementDTO) { AFElementTemplateDTO elementTemplateDTO = await GetElementTemplateDTOAsync(templateAbsolutePath); return(await GetElementTemplateSlimAsync(elementTemplateDTO, elementDTO).ConfigureAwait(false)); }