private void GetExistingForeignKeyReferences(NetsuiteApiResult ticket) { if (_dbContext.NetsuiteAssigndes.Any(x => x.name == ticket.columns.assigned.name)) { ticket.columns.assigned = _dbContext.NetsuiteAssigndes.Find(ticket.columns.assigned.name); } if (_dbContext.NetsuiteCompanies.Any(x => x.name == ticket.columns.company.name)) { ticket.columns.company = _dbContext.NetsuiteCompanies.Find(ticket.columns.company.name); } if (_dbContext.NetsuitePriorities.Any(x => x.name == ticket.columns.priority.name)) { ticket.columns.priority = _dbContext.NetsuitePriorities.Find(ticket.columns.priority.name); } if (_dbContext.NetsuiteStages.Any(x => x.name == ticket.columns.stage.name)) { ticket.columns.stage = _dbContext.NetsuiteStages.Find(ticket.columns.stage.name); } if (_dbContext.NetsuiteStatuses.Any(x => x.name == ticket.columns.status.name)) { ticket.columns.status = _dbContext.NetsuiteStatuses.Find(ticket.columns.status.name); } if (_dbContext.NetuiteContacts.Any(x => x.name == ticket.columns.contact.name)) { ticket.columns.contact = _dbContext.NetuiteContacts.Find(ticket.columns.contact.name); } if (_dbContext.NetsuiteCategories.Any(x => x.name == ticket.columns.category.name)) { ticket.columns.category = _dbContext.NetsuiteCategories.Find(ticket.columns.category.name); } if (_dbContext.NetsuiteProfiles.Any(x => x.name == ticket.columns.profile.name)) { ticket.columns.profile = _dbContext.NetsuiteProfiles.Find(ticket.columns.profile.name); } }
public void UpdateTicketWithoutLocalNsTicket(string ticket, JiraIssue issue) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_netsuiteUrlGetTicketByNumber); AddRequestHeaders(request); Uri uri = new Uri("https://rest.na2.netsuite.com"); //for debug in ns request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(new Cookie("NS_VER", "2016.2.0") { Domain = uri.Host }); request.CookieContainer.Add(new Cookie("JSESSIONID", "PXpG5FEKCRTXVLZotaXavNiSlZc4E3aXwDUjisc1nYIO00ad_qOb_UX1bbnEVlcBxngcE_vF7Zl28Z-m1E_IvxUnZi8PLCUH3616DHGtklomzS8JOt8xr35dY_Y6gX0V!-101849184") { Domain = uri.Host }); request.CookieContainer.Add(new Cookie("ssid11545456236", "CKNX0c2gxXJR2NcUetJX7l_Sk35D150HEPR3CqpT") { Domain = uri.Host }); request.Method = WebRequestMethods.Http.Post; using (var writer = new StreamWriter(request.GetRequestStream())) { var ser = new JavaScriptSerializer(); var payload = ser.Serialize(new { caseNumber = ticket }); writer.Write(payload); writer.Flush(); writer.Close(); } try { var response = (HttpWebResponse)request.GetResponse(); using (var reader = new StreamReader(response.GetResponseStream())) { var result = reader.ReadToEnd(); if (string.IsNullOrWhiteSpace(result)) { return; } var idPart = result.Substring(result.IndexOf(":", 0) + 3); idPart = idPart.Substring(0, idPart.IndexOf(",") - 1).Replace("\\", "").Replace("\\", ""); NetsuiteApiResult newResult = new NetsuiteApiResult() { id = idPart }; UpdateExistingTicketWithJiraStatus(newResult, issue); } } catch (Exception ex) { } }
public NetsuiteApiResult GetOrCreateResult(NetsuiteApiResult ticket) { NetsuiteApiResult newTicket = ticket; if (_dbContext.NetsuiteTickets.Any() && _dbContext.NetsuiteTickets.Any(x => x.id == ticket.id)) { newTicket = _dbContext.NetsuiteTickets.Find(ticket.id); } return(newTicket); }
public void FillEmptyReferences(NetsuiteApiResult thisResult) { var properties = typeof(Columns).GetProperties(); foreach (var prop in properties) { try { if (prop.GetValue(thisResult.columns) != null) { continue; } prop.SetValue(thisResult.columns, prop.PropertyType.Name.ToLower() != "string" ? Activator.CreateInstance(prop.PropertyType) : string.Empty); } catch { } } }
public void UpdateExistingTicketWithJiraStatus(NetsuiteApiResult nsTicket, JiraIssue jIssue) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_netsuiteUrlTrackedUpdate); AddRequestHeaders(request); request.Method = WebRequestMethods.Http.Post; var fixVersionSelector = (from version in jIssue.FixVersions select version.name).ToString(); using (var writer = new StreamWriter(request.GetRequestStream())) { var ser = new JavaScriptSerializer(); var payload = ser.Serialize(new { id = nsTicket.id, jiraStatus = jIssue.Status, fixVersion = (jIssue.FixVersions != null && jIssue.FixVersions.Count > 0 ? fixVersionSelector : ""), priority = "", components = "", type = jIssue.IssueType }); writer.Write(payload); writer.Flush(); writer.Close(); } try { var response = (HttpWebResponse)request.GetResponse(); using (var reader = new StreamReader(response.GetResponseStream())) { var result = reader.ReadToEnd(); Assert.IsTrue(Convert.ToBoolean(result)); } } catch (Exception ex) { } }
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); }