Beispiel #1
0
        /// <summary>
        /// Returns all the issue types within JIRA
        /// </summary>
        /// <param name="projectKey">If provided, returns issue types only for given project</param>
        /// <returns>Collection of JIRA issue types</returns>
        public IEnumerable <IssueType> GetIssueTypes(string projectKey = null)
        {
            string projectId = null;

            if (projectKey != null)
            {
                var project = this.GetProjects().FirstOrDefault(p => p.Key.Equals(projectKey, StringComparison.OrdinalIgnoreCase));
                if (project != null)
                {
                    projectId = project.Id;
                }
            }

            projectKey = projectKey ?? ALL_PROJECTS_KEY;

            if (!_cache.IssueTypes.ContainsKey(projectKey))
            {
                WithToken(token =>
                {
                    var result = _jiraService.GetIssueTypes(token, projectId).Select(remoteIssueType => new IssueType(remoteIssueType));
                    _cache.IssueTypes.AddIfMIssing(new JiraEntityDictionary <IssueType>(projectKey, result));
                });
            }

            return(_cache.IssueTypes[projectKey].Values);
        }