private async Task LoadLayout(ProcessorModel model, WorkItemTypeModel wit, AzureDevOpsEndpoint endpoint, string processId) { wit.Layout = (await endpoint.GetApiDefinitionAsync <WorkItemLayout>(new object[] { processId, wit.WorkItemType.ReferenceName }, queryForDetails: false)); foreach (var page in wit.Layout.Pages) { var pageKey = $"{wit.WorkItemType.ReferenceName}::{page.Label}"; if (model.WorkItemPages.ContainsKey(pageKey)) { model.WorkItemPages[pageKey] = page; } else { model.WorkItemPages.Add(pageKey, page); } foreach (var section in page.Sections) { foreach (var group in section.Groups) { var groupKey = $"{wit.WorkItemType.ReferenceName}::{page.Label}::{section.Id}::{group.Label}"; if (model.WorkItemGroups.ContainsKey(groupKey)) { model.WorkItemGroups[groupKey] = group; } else { model.WorkItemGroups.Add(groupKey, group); } foreach (var control in group.Controls) { var controlKey = $"{wit.WorkItemType.ReferenceName}::{page.Label}::{section.Id}::{group.Label}::{control.Id}"; if (model.WorkItemControls.ContainsKey(controlKey)) { model.WorkItemControls[controlKey] = control; } else { model.WorkItemControls.Add(controlKey, control); } } } } } }