GetStatusesFromMetadata(ProjectFilter projectFilter)
        {
            var json = _jiraContext.Api.GetStatusesByProject().Result;
            var statusesByProjects = json
                                     .ToObject <List <StatusesByProject> >()
                                     .Where(s => projectFilter.IncludesProject(s.Project));

            foreach (var project in statusesByProjects)
            {
                foreach (var type in project.StatusesByType)
                {
                    var categories = type.Statuses
                                     .Select(s => (name: s.Name, cat: s.StatusCategory.Name))
                                     .ToLookup(s => s.cat, s => s.name);

                    foreach (var category in categories)
                    {
                        foreach (var status in category)
                        {
                            yield return(project.Project, type.Name, category.Key, status);
                        }
                    }
                }
            }
        }
        private IEnumerable <(string project, string issueType, string description)> GetIssueTypesFromMetadata(ProjectFilter projectFilter)
        {
            var projects = _jiraContext.Api.GetProjects().Result
                           .ToObject <List <Project> >()
                           .Where(p => projectFilter.IncludesProject(p.Key));

            foreach (var project in projects)
            {
                foreach (var type in project.IssueTypes)
                {
                    yield return(project.Key, type.Name, type.Description);
                }
            }
        }