public List <NetsuiteApiResult> GetAllTickets(JiraSuiteDbContext dbContext) { List <NetsuiteApiResult> allTickets = new List <NetsuiteApiResult>(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_netsuiteUrlTrackedUpdate); AddRequestHeaders(request); using (var stream = new StreamReader(request.GetResponse().GetResponseStream())) { var responseObj = stream.ReadToEnd(); //multi thread this? allTickets.AddRange(DeserializeResult(responseObj, dbContext)); } return(allTickets); }
public JiraIssue GetCreateJiraIssue(Issue issue, out bool isNew) { _dbContext = DBContextManager.Instance.DbContext; JiraIssue thisIssue = new JiraIssue(); if (_dbContext.JiraIssues.Any()) { thisIssue = _dbContext.JiraIssues.FirstOrDefault(x => (x.IssueKey != null) && (issue.key != null) && (x.IssueKey == issue.key)); if (thisIssue != null) { thisIssue.UpdateFromExisting(issue); _dbContext.SaveChanges(); } } bool state = isNew = string.IsNullOrEmpty(thisIssue?.IssueKey) ? true : false; return(thisIssue); }
public void GetJiraTicketsWithMissingInfoFromNetsuite() { using (_dbContext = DBContextManager.Instance.DbContext) { var jiraIssues = _dbContext.JiraIssues.Where(x => x.IssueId == null).ToList(); Parallel.ForEach(jiraIssues, issue => { try { Issue newJiraIssue = _jiraConnection.Client.LoadIssue(issue.IssueKey); // .GetIssuesByQuery(issue.IssueKey.Substring(0, issue.IssueKey.IndexOf('-')), $"key = {issue.IssueKey}").FirstOrDefault(); issue.UpdateFromExisting(newJiraIssue); _dbContext.Entry(issue).State = EntityState.Modified; _dbContext.SaveChanges(); } catch (Exception e) { Console.Write($"Error Caught: {e.Message}."); } }); } }
public List <NetsuiteApiResult> GetAllResults(JiraSuiteDbContext dbContext) { return(_netsuiteConnection.GetAllTickets(dbContext)); }
private List <NetsuiteApiResult> DeserializeResult(string responseString, JiraSuiteDbContext dbContext) { List <NetsuiteApiResult> parsedList = new List <NetsuiteApiResult>(); string[] responseArray = responseString.Split('}'); var loopCounter = 0; while (loopCounter < responseArray.Length / 10) { try { NetsuiteApiResult thisResult = new NetsuiteApiResult() { columns = new Columns() }; var thisarraySet = responseArray[(loopCounter * 10)].Split('\\'); for (var i = 0; i < thisarraySet.Length - 2; i++) { var column = thisarraySet[i].Replace("\"", ""); var value = thisarraySet[i + 2].Replace("\"", ""); switch (column) { case "id": thisResult.id = value; i += 3; break; case "recordtype": thisResult.recordtype = value; i += 3; break; case "casenumber": thisResult.columns.casenumber = value; i += 3; break; case "title": thisResult.columns.title = value; i += 3; break; case "company": if (dbContext.NetsuiteCompanies.Find(thisarraySet[i + 4].Replace("\"", "")) != null) { thisResult.columns.company = dbContext.NetsuiteCompanies.Find(thisarraySet[i + 4].Replace("\"", "")); } else { thisResult.columns.company = dbContext.NetsuiteCompanies.Create(); thisResult.columns.company.name = thisarraySet[i + 4].Replace("\"", ""); dbContext.Entry(thisResult.columns.company).State = EntityState.Added;; dbContext.SaveChanges(); } i += 3; break; } } for (var i = 1; i < 9; i++) { string columnName = string.Empty, columnValue = string.Empty; try { columnName = responseArray[i + (loopCounter * 10)].Split('\\')[1].Replace("\"", ""); columnValue = responseArray[i + (loopCounter * 10)].Split('\\')[5].Replace("\"", ""); } catch {} switch (columnName) { case "casenumber": thisResult.columns.casenumber = columnValue; break; case "contact": if (dbContext.NetuiteContacts.Find(columnValue) != null) { thisResult.columns.contact = dbContext.NetuiteContacts.Find(columnValue); } else { thisResult.columns.contact = dbContext.NetuiteContacts.Create(); thisResult.columns.contact.name = columnValue; dbContext.Entry(thisResult.columns.contact).State = EntityState.Added;; dbContext.SaveChanges(); } break; case "stage": if (dbContext.NetsuiteStages.Find(columnValue) != null) { thisResult.columns.stage = dbContext.NetsuiteStages.Find(columnValue); } else { thisResult.columns.stage = dbContext.NetsuiteStages.Create(); thisResult.columns.stage.name = columnValue; dbContext.Entry(thisResult.columns.stage).State = EntityState.Added;; dbContext.SaveChanges(); } break; case "status": if (dbContext.NetsuiteStatuses.Find(columnValue) != null) { thisResult.columns.status = dbContext.NetsuiteStatuses.Find(columnValue); } else { thisResult.columns.status = dbContext.NetsuiteStatuses.Create(); thisResult.columns.status.name = columnValue; dbContext.Entry(thisResult.columns.status).State = EntityState.Added;; dbContext.SaveChanges(); } break; case "startdate": thisResult.columns.startdate = responseArray[i + (loopCounter * 10)].Split('\\')[3].Replace("\"", ""); if ( dbContext.NetsuiteCategories.Find( responseArray[i + (loopCounter * 10)].Split('\\')[13].Replace("\"", "")) != null) { thisResult.columns.category = dbContext.NetsuiteCategories.Find( responseArray[i + (loopCounter * 10)].Split('\\')[13].Replace("\"", "")); } else { thisResult.columns.category = dbContext.NetsuiteCategories.Create(); thisResult.columns.category.name = responseArray[i + (loopCounter * 10)].Split('\\')[13].Replace("\"", ""); dbContext.Entry(thisResult.columns.category).State = EntityState.Added;; dbContext.SaveChanges(); } break; case "assigned": if (dbContext.NetsuiteAssigndes.Find(columnValue) != null) { thisResult.columns.assigned = dbContext.NetsuiteAssigndes.Find(columnValue); } else { thisResult.columns.assigned = dbContext.NetsuiteAssigndes.Create(); thisResult.columns.assigned.name = columnValue; dbContext.Entry(thisResult.columns.assigned).State = EntityState.Added;; dbContext.SaveChanges(); } break; case "priority": if (dbContext.NetsuitePriorities.Find(columnValue) != null) { thisResult.columns.priority = dbContext.NetsuitePriorities.Find(columnValue); } else { thisResult.columns.priority = dbContext.NetsuitePriorities.Create(); thisResult.columns.priority.name = columnValue; dbContext.Entry(thisResult.columns.priority).State = EntityState.Added;; dbContext.SaveChanges(); } break; case "helpdesk": //ASSIGN CUSTOM FIELDS HERE!!! var refinedFields = from str in responseArray[i + (loopCounter * 10)].Split('\\') select str.Replace("\"", ""); for (var j = 0; j < refinedFields.ToArray().Length; j++) { switch (refinedFields.ToArray()[j]) { case "custeventsn_case_number": columnValue = refinedFields.ToArray()[j + 2]; foreach (var ticket in columnValue.Split(',')) { thisResult.columns.JiraIssues.Add( dbContext.JiraIssues.Find(ticket) ?? new JiraIssue() { IssueKey = ticket }); } break; case "custeventescalatedto": thisResult.columns.escalatedto = refinedFields.ToArray()[j + 2]; break; } } break; } } FillEmptyReferences(thisResult); parsedList.Add(thisResult); loopCounter++; } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } return(parsedList); }