public Zendesk GetTicketInformation(string ticketNo) { Zendesk ticket = new Zendesk(); try { long.TryParse(ticketNo, out long longTicketNo); ticket = ticket.VerifyInsertedZendeskTicket(longTicketNo); if (ticket != null) { if (String.IsNullOrEmpty(ticket.FromEmailAddress) && String.IsNullOrEmpty(ticket.FromEmailName)) { ticket.GetRequester(); } } } catch (Exception) { ticket = null; } return(ticket); }
protected void BtnIssueReturnLabel_Click(object sender, EventArgs e) { Zendesk ticket = new Zendesk(); bool dataVerified = ZendeskIssueReturnLabelControl.VerifyInput(ref ticket); if (dataVerified) { ZendeskIssueReturnLabelControl.IssueZendeskReturnLabel(tcNo.Text, tcDocNo.Text, true, ticket); } }
public Zendesk VerifyZendeskTicket(long zendeskTicket) { Zendesk ticket = new Zendesk(); try { IResponse <Ticket> validTicket = client.Tickets.Get(zendeskTicket); Ticket response = validTicket.Item; ZendDeskEmailEntry fromEmails = ZendDeskEmailParser.GetEmailList(response.Via.Source.From); ZendDeskEmailEntry toEmails = ZendDeskEmailParser.GetEmailList(response.Via.Source.To); ticket = new Zendesk(response.Id.ToString(), response.Created, response.Updated, response.Subject, response.Status.ToString(), response.Priority, false, fromEmails.Address, fromEmails.Name, toEmails.Address, toEmails.Name, response.RequesterId.GetValueOrDefault()); } catch (Exception) { ticket = null; } return(ticket); }
public HomeController( IOptions <SiteConfiguration> settings, IMemoryCache memoryCache, ApplicationDbContext context, IStringLocalizer <GeneralResource> generalLocalizer, IEmailSender emailSender, IOptions <General> generalSettings, IOptions <Features> featureSettings, IOptions <Smtp> smtpSettings, IOptions <Media> mediaSettings, IOptions <ActiveCompaign> activeCompanySettings, IOptions <Zendesk> zendeskSettings, IWebHostEnvironment _environment, IHttpContextAccessor _httpContextAccessor, SignInManager <ApplicationUser> signInManager, IActiveCampaignClient activeCampaignClient ) { _context = context; _emailSender = emailSender; _signInManager = signInManager; _activeCompaignSettings = activeCompanySettings.Value; _activeCampaignClient = activeCampaignClient; _zendeskSettings = zendeskSettings.Value; // readable configuration Configs.GeneralSettings = generalSettings.Value; Configs.SmtpSettings = smtpSettings.Value; Configs.FeatureSettings = featureSettings.Value; Configs.MediaSettings = mediaSettings.Value; SiteConfig.Config = settings.Value; SiteConfig.Cache = memoryCache; SiteConfig.generalLocalizer = generalLocalizer; SiteConfig.Environment = _environment; SiteConfig.HttpContextAccessor = _httpContextAccessor; }
protected void BtnCreateRMA_Click(object sender, EventArgs e) { StringBuilder lineBuild = new StringBuilder(); StringBuilder shippingBuild = new StringBuilder(); string lineError = ""; try { shipToName = txtShipToName.Text; shipToAddress1 = txtShipToAddress1.Text; shipToAddress2 = txtShipToAddress2.Text; shipToCity = txtShipToCity.Text; shipToCode = txtShipToCode.Text; shipToState = txtShipToState.Text; no = tcNo.Text; docNo = tcDocNo.Text; notes = txtNotes.Text; resources = cbxResources.Checked; printRMA = cbxPrintRMA.Checked; createLabel = cbxCreateLabel.Checked; //email = txtCustEmail.Text; returnTrackingNo = txtInsertTrackingNo.Text; imeiNo = tcIMEINo.Text; string validateMsg = ValidateInput(); bool validateZendesk = false; bool allValidLines = true; int rowCount = 0; int controlCount = 0; Zendesk ticket = new Zendesk(); if (validateMsg == "All Input Valid") { bool process = true; if (createLabel) { validateZendesk = ZendeskIssueReturnLabelControl.VerifyInput(ref ticket); process = validateZendesk; } if (process) { if (ZendeskIssueReturnLabelControl.NewZendeskTicket) { email = ZendeskIssueReturnLabelControl.EmailTo; } else { email = String.IsNullOrEmpty(ticket.FromEmailAddress) ? string.Empty : ticket.FromEmailAddress; } foreach (TableRow row in tblCreateReturnOrderTableDetails.Rows) { rowCount++; string itemNo = string.Empty; int qtyLine = 0; int actionQty = 0; string reasonCode = string.Empty; int reqReturnAction = -1; controlCount = 0; foreach (TableCell cell in row.Cells) { if (cell.ID.Contains("itemNo_")) { itemNo = cell.Text.ToString(); } if (cell.ID.Contains("itemQuantity_")) { int.TryParse(cell.Text.ToString(), out qtyLine); } if (cell.ID.Contains("actionQty_")) { int.TryParse(cell.Text.ToString(), out actionQty); } foreach (Control c in cell.Controls) { controlCount++; //if (c.GetType() == typeof(TextBox)) //{ // string value = ((TextBox)c).Text; // int.TryParse(value, out actionQty); //} if (c.GetType() == typeof(DropDownList)) { int index = ((DropDownList)c).SelectedIndex; if (c.ID.Contains("ddlReturnReasonCode")) { /* v7.1 - 3 October 2018 - Neil Jansen * Updated logic to filter out incorrect catagories for Return Reason Code */ List <ReturnReason> sr = (List <ReturnReason>)Session["ReturnReasons"]; List <ReturnReason> rl = new List <ReturnReason>(); foreach (ReturnReason item in sr) { if (item.Category != "Part Request" && item.Category != "Cancel Order" && item.Category != "Partial Refund" && item.Category != "Unknown" && item.Category != "Nonconformed" && item.Category != "Vendor Rejected") { rl.Add(item); } } reasonCode = (rl)[index].ReasonCode; } else if (c.ID.Contains("ddlREQReturnAction")) { reqReturnAction = index; } } } string lineValidMessage = string.Empty; if ((rowCount > 1 && controlCount == 2 && actionQty != 0)) { lineValidMessage = ValidateLine(itemNo, qtyLine, actionQty, reasonCode, reqReturnAction); if (lineValidMessage == "Valid Line Input") { lineBuild.Append(itemNo).Append(":"); lineBuild.Append(actionQty).Append(":"); lineBuild.Append(reasonCode).Append(":"); lineBuild.Append(reqReturnAction).Append(","); } else { allValidLines = false; if (lineError == "") { lineError = lineValidMessage; } } } } } if (allValidLines) { string lineValues = lineBuild.ToString(); CreatedReturnHeader crh = new CreatedReturnHeader(); SendService ss = new SendService(); if (no.ToUpper().Contains("RMA")) { update = true; } else { update = false; } shippingBuild.Append(shipToName).Append(":"); shippingBuild.Append(shipToAddress1).Append(":"); shippingBuild.Append(shipToAddress2).Append(":"); shippingBuild.Append(shipToCity).Append(":"); shippingBuild.Append(shipToCode).Append(":"); shippingBuild.Append(shipToState); string shippingDetails = shippingBuild.ToString(); crh = ss.CreateReturnOrder(no, docNo, string.Empty, notes, resources, printRMA, createLabel, email, lineValues, update, returnTrackingNo, shippingDetails, imeiNo, zendeskTicketNo); ClientScript.RegisterStartupScript(this.GetType(), "returnRMA", "alert('" + crh.RMANo + "');", true); if (createLabel) { ZendeskIssueReturnLabelControl.IssueZendeskReturnLabel(crh.RMANo, docNo, false, ticket); } // Replace legacy with Zendesk return label //worker = new Thread(() => //{ // try // { // ss.LegacyReturnLabel(crh.RMANo, email, sessionID); // } // catch (Exception workerE) // { // Log.Error(workerE.Message, workerE); // ClientScript.RegisterStartupScript(this.GetType(), "labelError", "alert('" + workerE.Message.Replace("'", "\"") + "');", true); // } //}); //worker.Start(); Session["CreatedRMA"] = crh; Session["NoUserInteraction"] = true; if (!ZendeskIssueReturnLabelControl.GenerateURL) { ClientScript.RegisterStartupScript(this.GetType(), "openCreatedRMA", "OpenCreatedRMA();", true); } } else { ClientScript.RegisterStartupScript(this.GetType(), "lineError", "alert('" + lineError + "');", true); } } } else { ClientScript.RegisterStartupScript(this.GetType(), "validateMsg", "alert('" + validateMsg + "');", true); } } catch (Exception ex) { Log.Error(ex.Message, ex); ClientScript.RegisterStartupScript(this.GetType(), "errorAlert", "alert('" + ex.Message.Replace("'", "\"") + "');", true); if (ex.Message.ToLower().Contains("session")) { ClientScript.RegisterStartupScript(this.GetType(), "closeErrorAlert", "parent.window.close();", true); } } }
public configurationController( IApplicationLifetime applicationLifetime, IWritableOptions <General> general_options, IWritableOptions <Database> database_options, IWritableOptions <Comments> comment_options, IWritableOptions <Smtp> smtp_options, IWritableOptions <Media> media_options, IWritableOptions <Features> features_options, IWritableOptions <Listing> listings_options, IWritableOptions <Authentication> authentication_options, IWritableOptions <Registration> registration_options, IWritableOptions <Aws> aws_options, IWritableOptions <Social> social_options, IWritableOptions <Contact> contact_options, IWritableOptions <Rechapcha> rechapcha_options, IWritableOptions <ElasticSearch> elasticsearch_options, IWritableOptions <ActiveCompaign> activecompany_options, IWritableOptions <Zendesk> zendesk_options, IOptions <General> generalSettings, IOptions <Comments> commentSettings, IOptions <Smtp> smtpSettings, IOptions <Media> mediaSettings, IOptions <Features> featureSettings, IOptions <Listing> listingSettings, IOptions <Authentication> authenticationSettings, IOptions <Registration> registrationSettings, IOptions <Aws> awsSettings, IOptions <Social> socialSettings, IOptions <Contact> contactSettings, IOptions <Rechapcha> rechapchaSettings, IOptions <ElasticSearch> elasticSearchSettings, IOptions <Zendesk> zendeskSettings, IOptions <ActiveCompaign> activeSettings, IOptions <Jugnoon.Blogs.Settings.General> blogs_general_Settings, IOptions <Jugnoon.Blogs.Settings.Aws> blogs_aws_Settings, ApplicationDbContext context ) { _context = context; // writable injectors _database_options = database_options; _general_options = general_options; _comment_options = comment_options; _smtp_options = smtp_options; _media_options = media_options; _features_options = features_options; _listings_options = listings_options; _authentication_options = authentication_options; _registration_options = registration_options; _aws_options = aws_options; _social_options = social_options; _contact_options = contact_options; _rechapcha_options = rechapcha_options; _elasticsearch_options = elasticsearch_options; _activecompaign_options = activecompany_options; _zendesk_options = zendesk_options; ApplicationLifetime = applicationLifetime; // readable injectors _generalSettings = generalSettings.Value; _commentSettings = commentSettings.Value; _smtpSettings = smtpSettings.Value; _mediaSettings = mediaSettings.Value; _featureSettings = featureSettings.Value; _listingSettings = listingSettings.Value; _authenticationSettings = authenticationSettings.Value; _registrationSettings = registrationSettings.Value; _awsSettings = awsSettings.Value; _socialSettings = socialSettings.Value; _contactSettings = contactSettings.Value; _rechapchaSettings = rechapchaSettings.Value; _elasticSearchSettings = elasticSearchSettings.Value; _zendeskSettings = zendeskSettings.Value; _activeSettings = activeSettings.Value; _blogs_general_Settings = blogs_general_Settings.Value; _blogs_aws_Settings = blogs_aws_Settings.Value; }
public void IssueZendeskReturnLabel(string no, string docNo, bool closeWindow, Zendesk ticket) { SendService ss = new SendService(); string pdf64String = string.Empty; string amazonBucketURL = string.Empty; try { if (ExistingZendeskTicket) { string message = string.Empty; ZendeskTicket = ticket; if (EmailTo != null) { int index = EmailTo.IndexOf('@'); EmailTo = EmailTo.Insert(index, "+id" + TicketNo); } else { EmailTo = string.Empty; } if (FromEmail == null) { FromEmail = string.Empty; } pdf64String = ss.IssueReturnLabel(no, EmailTo, ExistingZendeskTicket, FromEmail, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; ZendeskTicket.UpdateZendeskTicketWithPDFFile(pdf64String, no, amazonBucketURL); message = no + ", Return label is being processed and will be emailed within 1 hour."; Page.ClientScript.RegisterStartupScript(this.GetType(), "issueReturnLableExistingTicket", "alert('" + Json.Encode(message) + "');", true); if (closeWindow) { Page.ClientScript.RegisterStartupScript(this.GetType(), "closeAfterProcessing", "parent.window.close();", true); } } else if (NewZendeskTicket) { string message = string.Empty; pdf64String = ss.IssueReturnLabel(no, EmailTo, ExistingZendeskTicket, FromEmail, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; long?newZendeskTicketID = 0; ZendeskTicket = new Zendesk(); newZendeskTicketID = ZendeskTicket.CreateNewZendeskTicketWithPDFFile(pdf64String, no, amazonBucketURL, EmailTo, CustomerName, docNo); message = "New Zendesk Ticket is: " + newZendeskTicketID + @". " + no + ", Return label is being processed and will be emailed within 1 hour."; Page.ClientScript.RegisterStartupScript(this.GetType(), "issueReturnLabelNewTicket", "alert('" + Json.Encode(message) + "');", true); Page.ClientScript.RegisterStartupScript(this.GetType(), "closeErrorAlert", "parent.window.close();", true); } else if (DownloadManually) { string message = string.Empty; pdf64String = ss.IssueReturnLabel(no, string.Empty, ExistingZendeskTicket, string.Empty, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; if (pdf64String != string.Empty) // Display only the URL { ZendeskTicket = new Zendesk(); ZendeskTicket.DownloadRMAPDFManually(pdf64String, no); message = no + ", Return label has been successfully downloaded."; Page.ClientScript.RegisterStartupScript(this.GetType(), "manualDownloadExistingTicket", "alert('" + Json.Encode(message) + "');", true); Page.ClientScript.RegisterStartupScript(this.GetType(), "closeAfterDownload", "parent.window.close();", true); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "manualDownloadExistingTicket", "alert('The file could not be downloaded.');", true); } } else if (GenerateURL) { string message = string.Empty; string clipboardMessage = string.Empty; pdf64String = ss.IssueReturnLabel(no, string.Empty, ExistingZendeskTicket, string.Empty, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; if (amazonBucketURL != string.Empty) // Display only the URL { BitlyAPI bitlyAPI = new BitlyAPI(); string url = bitlyAPI.ShortenURL(amazonBucketURL); message = no + ", Return label URL has been successfully generated."; clipboardMessage = @"Hello, Your return request has been approved. Your Return Merchandise Authorization number is " + no + @" Follow the link below to download your return instructions and shipping label. Or copy and paste the link into your browser. " + url + @" IMPORTANT: Please remove ALL locks and passwords. Any device(s) received locked with your information will be denied, returned at your expense with no refund submitted for processing. Thank You"; Page.ClientScript.RegisterStartupScript(this.GetType(), "clipboardMessage", "CopyToClipboard('" + Json.Encode(clipboardMessage) + "');", true); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "manualGenerateURL", "alert('The URL could not be generated.');", true); } } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "manualDownloadExistingTicket", "alert('Please select a valid option.');", true); } } catch (Exception ex) { Log.Error(ex.Message, ex); Page.ClientScript.RegisterStartupScript(this.GetType(), "errorAlert", "alert('" + ex.Message.Replace("'", "\"").Replace("\n", "\\n") + "');", true); if (ex.Message.ToLower().Contains("session")) { Page.ClientScript.RegisterStartupScript(this.GetType(), "closeErrorAlert", "parent.window.close();", true); } } }
public bool VerifyInput(ref Zendesk zendeskTicket) { bool validInput = false; if (ExistingZendeskTicket) { if (SelectedZendeskTicket) { cust = (Customer)Session["SelectedCustomer"]; foreach (SalesHeader head in cust.SalesHeader) { foreach (Zendesk ticket in head.Tickets) { if (!zendeskTickets.Any(t => t.TicketNo.Equals(ticket.TicketNo))) { zendeskTickets.Add(ticket); } } } foreach (ReturnHeader returnHead in cust.ReturnHeaders) { foreach (Zendesk ticket in returnHead.Tickets) { if (!zendeskTickets.Any(t => t.TicketNo.Equals(ticket.TicketNo))) { zendeskTickets.Add(ticket); } } } // TicketNo = ddlZendeskTickets.SelectedValue; ~ why are you here? Go away! if (TicketNo != string.Empty) { foreach (Zendesk ticket in zendeskTickets) { if (ticket.TicketNo == TicketNo) { EmailSubject = ticket.Subject; FromEmail = ticket.FromEmailAddress; FromEmailName = ticket.FromEmailName; EmailTo = ticket.ToEmailsAddress; zendeskTicket = ticket; } } validInput = true; } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "selectValidTicketNo", "alert('Please select a valid existing Zendesk ticket when attempting to update a ticket number.');", true); } } else if (InsertZendeskTicket) { long.TryParse(InsertedZendeskTicket, out long ticketResult); if (ticketResult != 0) { Zendesk Zendesk = new Zendesk(); zendeskTicket = Zendesk.VerifyInsertedZendeskTicket(ticketResult); if (zendeskTicket != null) { if (String.IsNullOrEmpty(zendeskTicket.FromEmailAddress) && String.IsNullOrEmpty(zendeskTicket.FromEmailName)) { zendeskTicket.GetRequester(); } validInput = true; } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "invalidZendeskTicket", "alert('The Zendesk ticket is invalid, please enter a valid ticket number.');", true); } } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "invalidTicketNoInserted", "alert('Please insert a valid Zendesk ticket number.');", true); } } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "invalidZendeskUpdateSelection", "alert('Please select a valid option to update existing Zendesk Ticket.');", true); } } else if (NewZendeskTicket) { if (HttpContext.Current.Session["ActiveUser"] != null) { User u = (User)HttpContext.Current.Session["ActiveUser"]; FromEmail = u.ZendeskEmail; EmailTo = CustomerEmailAddress; string validateInput = ValidateInput(EmailTo, CustomerName); if (validateInput != "Valid Input") { validInput = false; Page.ClientScript.RegisterStartupScript(this.GetType(), "unvalidatedData", "alert('" + validateInput + "');", true); } else { validInput = true; } } else { throw new Exception("Unable to retrieve current Zendesk Email address."); } } else if (DownloadManually) { validInput = true; } else if (GenerateURL) { validInput = true; } return(validInput); }