private async void CloseSubTaskk(string subTaskKey)
        {
            IssueRef issueRef = new IssueRef();

            issueRef.key = subTaskKey;
            issueRef.id  = subTaskKey;

            var issue = await JiraProxy.LoadIssue(issueRef);

            if (issue == null || issue.fields == null)
            {
                return;
            }

            JiraProxy.CloseSubTask(issueRef);
        }
예제 #2
0
        private async void btnSync_Click(object sender, EventArgs e)
        {
            this.btnSync.Enabled = false;

            if (jiraIssueList == null || jiraIssueList.Count <= 0)
            {
                this.btnSync.Enabled = true;
                return;
            }

            foreach (var issue in jiraIssueList)
            {
                if (issue.subtasks == null || issue.subtasks.Count <= 0)
                {
                    continue;
                }

                foreach (var key in issue.subtasks.Keys)
                {
                    var subTask = issue.subtasks[key];

                    IssueRef issueRef = new IssueRef();
                    issueRef.key = subTask.key;
                    issueRef.id  = subTask.key;

                    if (subTask == null ||
                        subTask.timespent <= 0 ||
                        subTask.worklogs == null ||
                        subTask.worklogs.Count <= 0)
                    {
                        continue;
                    }

                    var lastWorkLog = subTask.worklogs[subTask.worklogs.Count - 1];
                    var lastAssigneeEmailAddress = lastWorkLog.assigneeEmailAddress;

                    var subTaskItem = await JiraProxy.LoadIssue(issueRef);

                    if (subTaskItem == null || subTaskItem.fields == null)
                    {
                        continue;
                    }

                    if (subTask.assignee == "Jerry Lu")
                    {
                        // https://accelaeng.atlassian.net/rest/api/2/user/[email protected]
                        JiraUser jiraUser = new JiraUser();

                        if ("*****@*****.**" == lastAssigneeEmailAddress)
                        {
                            lastAssigneeEmailAddress = "likko.zhang";
                        }
                        jiraUser.name = lastAssigneeEmailAddress;
                        subTaskItem.fields.assignee = jiraUser;

                        JiraProxy.UpdateSubTask(subTaskItem);
                    }

                    if ("Closed".Equals(issue.status, StringComparison.InvariantCultureIgnoreCase) &&
                        !"Closed".Equals(subTask.status, StringComparison.InvariantCultureIgnoreCase))
                    {
                        if ("Case".Equals(issue.issueType, StringComparison.InvariantCultureIgnoreCase))
                        {
                            if ("Review and Recreate(QA)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Review and Recreate(Dev)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Research Root Cause".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase))
                            {
                                JiraProxy.CloseSubTask(issueRef);
                            }
                        }

                        if ("Bug".Equals(issue.issueType, StringComparison.InvariantCultureIgnoreCase))
                        {
                            if ("Review and Recreate(QA)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Review and Recreate(Dev)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Research Root Cause".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Code Fix(Dev)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Write Test Case(QA)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Execute Test Case(QA)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Write Release Notes(Dev)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase) ||
                                "Review Release Notes(QA)".Equals(subTask.name, StringComparison.InvariantCultureIgnoreCase))
                            {
                                JiraProxy.CloseSubTask(issueRef);
                            }
                        }
                    }
                }
            }

            this.btnSync.Enabled = true;
        }