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; }
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; }
public Issue() { fields = new IssueFields(); }