Beispiel #1
0
 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) { }
        }
Beispiel #3
0
        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);
        }