private async Task <IssueSearchResponse> GetProjectIssuesAsync(string projectID) { IssueSearchResponse result = null; string jql = ""; if (projectID != null) { jql = "project = \"" + projectID + "\" and type in (Requirement, \"Customer Requirement\")"; } else { } result = await _jiraClient.GetIssuesByJQL(jql); return(result); }
private async Task <List <Node> > CreateProjectHierarchiesAsync(bool rootNodesOnly, string projectFilter = null) { List <Node> result = new List <Node>(); try { ProjectRootResources = new List <Resource>(); ProjectSearchResponse projectSearchResponse = await _jiraClient.GetJiraProjectsAsync(); foreach (Project project in projectSearchResponse.Values) { string projectID = JiraGuidConverter.ConvertToSpecIfGuid(project.Self, project.ID); if (projectFilter == null || (projectFilter != null && projectID == projectFilter)) { string projectResourceID = "_" + SpecIfGuidGenerator.CalculateSha1Hash(project.Key); Key resourceClass = new Key("RC-Hierarchy", "1.1"); Resource projectHierarchyResource = SpecIfDataFactory.CreateResource(resourceClass, _metadataReader); projectHierarchyResource.ID = projectResourceID; projectHierarchyResource.Revision = "1"; projectHierarchyResource.SetPropertyValue("dcterms:title", "Jira Project " + project.Key, _metadataReader); projectHierarchyResource.SetPropertyValue("dcterms:description", project.Name, _metadataReader); ProjectRootResources.Add(projectHierarchyResource); Node projectNode = new Node { ID = projectResourceID + "_Node", Revision = "1", IsHierarchyRoot = true, ProjectID = project.Key, ResourceObject = new Key(projectHierarchyResource.ID, projectHierarchyResource.Revision) }; result.Add(projectNode); if (!rootNodesOnly) { IssueSearchResponse issueSearchResponse = await GetProjectIssuesAsync(project.Key); if (issueSearchResponse != null) { foreach (Issue issue in issueSearchResponse.Issues) { string issueResourceID = JiraGuidConverter.ConvertToSpecIfGuid(issue.Self, issue.ID); string issueRevision = SpecIfGuidGenerator.ConvertDateToRevision(issue.Fields.Updated.Value); Node requirementNode = new Node { ID = issueResourceID + "_Node", Revision = "1", IsHierarchyRoot = false, ProjectID = project.Key, ResourceObject = new Key(issueResourceID, issueRevision) }; projectNode.Nodes.Add(requirementNode); } } } } } } catch (Exception exception) { Debug.WriteLine(exception); } return(result); }