Example #1
0
        public static async Task<Issue> CreateIssue(IssueFields fields)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var issue = jira.CreateIssue("ENGSUPP", "Case", fields);

            return issue;
        }      
Example #2
0
 public Issue CreateIssue(String projectKey, String issueType, IssueFields issueFields)
 {
     return(Issue.From(this.client.CreateIssue(projectKey, issueType, issueFields)));
 }
        private async void btnImportToJira_Click(object sender, EventArgs e)
        {
            this.btnImportToJira.Enabled = false;

            DataTable dataTable = grdCaseList.DataSource as DataTable;
            if (dataTable != null)
            {
                int rowCount = dataTable.Rows.Count;
                string caseNumber = "";
                string caseId = "";
                string jiraKey = "";
                string jiraId = "";
                string product = "";
                string solution = "";
                string origin = "";
                string customer = "";
                string buildVersion = "";
                string summary = "";
                string description = "";
                string severity = "";
                string openDate;
                string type = "";
                string targetedRelease = "";
                int reopenCount = 0;
                string lastModifiedDate = "";
                string bzid = String.Empty;
                string jiraStstus = String.Empty;
                string nextJiraStatus = String.Empty;
                string sfStatus = String.Empty;

                bool hotCase = false;
                bool missionsky = false;
                List<string> jiraLabels = new List<string>();

                for (int i = 0; i < rowCount; i++)
                {
                    DataRow row = dataTable.Rows[i];
                    caseNumber = row["SalesforceID"] as string;
                    caseId = row["ID"] as string;
                    jiraKey = row["JiraKey"] as string;
                    product = row["Product"] as string;
                    solution = row["Solution"] as string;
                    origin = row["Orgin"] as string;
                    customer = row["Customer"] as string;
                    buildVersion = row["Version"] as string;
                    summary = row["Summary"] as string;
                    description = row["Description"] as string;
                    severity = row["Severity"] as string;
                    openDate = (row["OpenDate"] as string);
                    hotCase = bool.Parse(row["HotCase"].ToString());
                    missionsky = bool.Parse(row["Missionsky"].ToString());
                    jiraLabels = row["JiraLabels"] as List<string>;
                    reopenCount = (String.IsNullOrEmpty(row["ReopenedCount"] as string) ? 0 : int.Parse(row["ReopenedCount"] as string));
                    reopenCount = reopenCount + 1;
                    lastModifiedDate = row["SFLastModified"] as string;
                    targetedRelease = row["TargetedRelease"] as string;
                    sfStatus = row["SFStatus"] as string;

                    DateTime temOpenDate;

                    if (this.chkOnlyImportCase.Checked)
                    {
                        
                        if (String.IsNullOrEmpty((jiraKey)))
                        {
                            IssueFields fields = new IssueFields();
                            fields.customfield_10600 = caseNumber;
                            fields.summary = summary;
                            //fields.labels.Add("Missionsky");
                            if (hotCase)
                            {
                                fields.labels.Add("HotCase");
                            }

                            if (missionsky)
                            {
                                //fields.labels.Add("Missionsky");
                            }

                            fields.description = description;
                            if (!String.IsNullOrEmpty(buildVersion))
                            {
                                fields.customfield_10907.Add(buildVersion);
                            }
                            temOpenDate = DateTime.Parse(openDate);
                            fields.customfield_10902 = temOpenDate.Year + "-" + (temOpenDate.Month < 10 ? "0" + temOpenDate.Month : "" + temOpenDate.Month) + "-" + (temOpenDate.Day < 10 ? "0" + temOpenDate.Day : "" + temOpenDate.Day) + "T00:00:00.000+1100";
                            //fields.customfield_11106 = new IssueSeverity();
                            //fields.customfield_11106.id = 11106;
                            //fields.customfield_11106.name = severity;
                            //fields.Priority = new IssuePriority();
                            //fields.Priority.name = severity;

                            /*
                            fields.customfield_10905 = severity;
                            fields.Priority = new IssuePriority();
                            fields.Priority.name = severity;
                            fields.customfield_11106 = new IssueSeverity();
                            fields.customfield_11106.name = ("High" == severity ? "Major" : severity);
                            //issue.fields.customfield_11106.id = 10414;
                            //fields.customfield_11501 = ("AdHoc Reports" == product ? "Accela Automation" : product);
                            //fields.customfield_10904 = product;
                            //fields.customfield_10900 = customer;
                            //if (!String.IsNullOrEmpty(buildVersion))
                            //{
                            //    fields.customfield_10901 = buildVersion;
                            //}
                            //fields.customfield_10906 = "https://na26.salesforce.com/" + caseId;
                             */

                            var issue = await JiraProxy.CreateIssue(fields);

                            row["JiraID"] = issue.key;
                        }
                    }
                    else
                    {
                        if (!String.IsNullOrEmpty((jiraKey)))
                        {
                            jiraId = row["JiraId"] as string;
                            jiraKey = row["JiraKey"] as string;
                            bzid = row["BZID"] as string;
                            jiraStstus = row["JiraStatus"] as string;
                            nextJiraStatus = row["NextJiraStatus"] as string;

                            Issue issue = new Issue();
                            issue.id = jiraId;
                            issue.key = jiraKey;

                            if (jiraLabels == null)
                            {
                                jiraLabels = new List<string>();
                            }

                            issue.fields.labels = jiraLabels;

                            // Remove Missionsky label
                            if (issue.fields.labels.Contains("Missionsky"))
                            {
                                issue.fields.labels.Remove("Missionsky");
                            }

                            // Remove SupportQA label
                            if (issue.fields.labels.Contains("SupportQA"))
                            {
                                issue.fields.labels.Remove("SupportQA");
                            }

                            if (sfStatus != null && sfStatus.ToLower().IndexOf("qa") >= 0)
                            {
                                issue.fields.labels.Add("SupportQA");
                            }

                            /*
                            if (!issue.fields.labels.Contains("Missionsky"))
                            {
                                issue.fields.labels.Add("Missionsky");
                            }
                            */

                            if (!String.IsNullOrEmpty(bzid) && !issue.fields.labels.Contains("ENG_BUG_BUCKET"))
                            {
                                if ("Development in Progress" == jiraStstus || "Development in Progress" == nextJiraStatus)
                                {
                                    issue.fields.labels.Add("ENG_BUG_BUCKET");
                                }

                                if ("Close" == jiraStstus)
                                {
                                    issue.fields.labels.Remove("ENG_BUG_BUCKET");
                                }
                            }

                            if (hotCase && !issue.fields.labels.Contains("HotCase"))
                            {
                                issue.fields.labels.Add("HotCase");
                            }

                            if (!hotCase && issue.fields.labels.Contains("HotCase"))
                            {
                                issue.fields.labels.Remove("HotCase");
                            }

                            if (missionsky && !issue.fields.labels.Contains("Missionsky"))
                            {
                                //issue.fields.labels.Add("Missionsky");
                            }

                            if (!missionsky && issue.fields.labels.Contains("Missionsky"))
                            {
                                issue.fields.labels.Remove("Missionsky");
                            }
                            
                            issue.fields.customfield_10905 = severity;
                            issue.fields.customfield_12801 = severity;
                            issue.fields.Priority = new IssuePriority();
                            //issue.fields.Priority.id = 7;
                            issue.fields.Priority.name = severity;
                            issue.fields.customfield_11106 = new IssueSeverity();
                            issue.fields.customfield_11106.name = ("High" == severity ? "Major" : severity);

                            issue.fields.customfield_11501 = product;
                            if (solution != null && solution.ToUpper().Contains("ARW")
                                || product != null && !String.IsNullOrEmpty("ARW") && product.ToUpper().Contains("ARW"))
                            {
                                issue.fields.customfield_11501 = "Accela ARW";
                            }

                            if ("AdHoc Reports" == product)
                            {
                                issue.fields.customfield_11501 = "Accela Ad Hoc";
                            }

                            if ("Reporting" == product)
                            {
                                issue.fields.customfield_11501 = "Accela Automation";
                            }

                            if ("Inspector" == product || "Civic Hero" == product || "Code Officer" == product || "Work Crew" == product || "Support Access" == product || "PublicStuff" == product)
                            {
                                issue.fields.customfield_11501 = "Accela Mobile";
                            }

                            if ("Civic Cloud Platform" == product || "Accela Asset Management" == product || "Accela Licensing & Case Management" == product || "Accela AMS Classic" == product || "EPC" == product)
                            {
                                issue.fields.customfield_11501 = "Accela Automation";
                            }

                            if ("Standard history conversion" == product)
                            {
                                issue.fields.customfield_11501 = "Accela Automation";
                            }

                            issue.fields.customfield_10904 = AccelaCaseUtil.AdjustProductName(product, solution, summary, description);
                            if ("Mobile Office" == issue.fields.customfield_10904)
                            {
                                issue.fields.customfield_11501 = "Mobile Office";
                            }

                            issue.fields.customfield_10900 = customer;
                            if ("Resolved".Equals(jiraStstus, StringComparison.InvariantCultureIgnoreCase)
                                || "Closed".Equals(jiraStstus, StringComparison.InvariantCultureIgnoreCase)
                                || "Development in Progress".Equals(jiraStstus, StringComparison.InvariantCultureIgnoreCase)
                                || "Resolved".Equals(nextJiraStatus, StringComparison.InvariantCultureIgnoreCase)
                                || "Closed".Equals(nextJiraStatus, StringComparison.InvariantCultureIgnoreCase)
                                || "Development in Progress".Equals(nextJiraStatus, StringComparison.InvariantCultureIgnoreCase))
                            {
                                if (issue.fields.labels.Contains("DB"))
                                {
                                    issue.fields.labels.Remove("DB");
                                }
                            }
                            else if ("Pending".Equals(jiraStstus, StringComparison.InvariantCultureIgnoreCase)
                                    || "Pending".Equals(nextJiraStatus, StringComparison.InvariantCultureIgnoreCase))
                            { 
                            }
                            else if ("Open".Equals(jiraStstus, StringComparison.InvariantCultureIgnoreCase)
                                || "In Progress".Equals(jiraStstus, StringComparison.InvariantCultureIgnoreCase)
                                || "Open".Equals(nextJiraStatus, StringComparison.InvariantCultureIgnoreCase)
                                || "In Progress".Equals(nextJiraStatus, StringComparison.InvariantCultureIgnoreCase))
                            {
                                if (!issue.fields.labels.Contains("DB"))
                                {
                                    if (AccelaDBMapper.ContainsKey(customer))
                                    {
                                        issue.fields.labels.Add("DB");
                                        CreateDBInfoComment(jiraKey, customer);
                                    }
                                }
                            }

                            if ("Delivery".Equals(origin, StringComparison.CurrentCultureIgnoreCase))
                            {
                                origin = "Other";
                            }
                            issue.fields.customfield_11900 = (origin.IndexOf("Email") >= 0) ? "Email" : origin; // To deal with one special case - "Email-MEA"
                            issue.fields.customfield_12400 = reopenCount;
                            temOpenDate = DateTime.Parse(lastModifiedDate);
                            issue.fields.customfield_10903 = temOpenDate.Year + "-" + (temOpenDate.Month < 10 ? "0" + temOpenDate.Month : "" + temOpenDate.Month) + "-" + (temOpenDate.Day < 10 ? "0" + temOpenDate.Day : "" + temOpenDate.Day) + "T00:00:00.000+1100";
                            //issue.fields.customfield_10903 = lastModifiedDate;

                            if (!String.IsNullOrEmpty(buildVersion))
                            {
                                issue.fields.customfield_10901 = buildVersion;
                            }
                            issue.fields.customfield_10906 = "https://na26.salesforce.com/" + caseId;

                            try
                            {
                                var updateIssue = await JiraProxy.UpdateIssue(issue);                                
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("Cannot update JIRA key - " + issue.key + ", please remove it and try again.");
                            }
                        }
                    }
                }
            }

            this.chkOnlyImportCase.Checked = !this.chkOnlyImportCase.Checked;
            this.btnImportToJira.Enabled = true;
        }
Example #4
0
 public Issue()
 {
     fields = new IssueFields();
 }