Ejemplo n.º 1
0
        public HttpResponseMessage MailChimpWebhook(FormDataCollection data)
        {
            string userAgent = "";

            if (Request.Headers != null && Request.Headers.UserAgent != null && Request.Headers.UserAgent.Any())
            {
                foreach (var agent in Request.Headers.UserAgent)
                {
                    if (agent != null && agent.Product != null && !string.IsNullOrEmpty(agent.Product.Name) && agent.Product.Name == "VonChimpenfurlr")
                    {
                        userAgent = agent.Product.Name;
                    }
                }
            }
            var dataReceived = data != null?data.ToList() : new List <KeyValuePair <string, string> >();

            //Ignoring MailChimp auto link checks. Ref: http://kb.mailchimp.com/quick-answers #Why-are-my-links-being-clicked
            if (userAgent != "VonChimpenfurlr" && dataReceived != null && dataReceived.Any())
            {
                CampaignResponseViewModel campaignResponseViewModel = new CampaignResponseViewModel()
                {
                    ResponseItems = dataReceived
                };
                MailChimpWebhookRequest request = new MailChimpWebhookRequest()
                {
                    CampaignResponse = campaignResponseViewModel, AccountId = this.AccountId
                };
                campaignService.MailChimpWebhookUpdate(request);
            }
            else if (userAgent == "VonChimpenfurlr" && dataReceived != null)
            {
                Logger.Current.Informational("Request received from Omnivore to verify the link in campaign. " + dataReceived.ToString());
            }
            else if (data == null)
            {
                Logger.Current.Informational("Mailchimp Webhook configured successfully");
            }
            return(Request.BuildResponse(new UnsubscribeContactResponse()
            {
                Success = true
            }));                                                                              //Revisit
        }
Ejemplo n.º 2
0
        public HttpResponseMessage SubmitForm(FormDataCollection formData)
        {
            Logger.Current.Verbose("In SubmitForm method. Request received to submit form.");
            HttpResponseMessage    formSubmissionResponse;
            SubmittedFormViewModel submittedFormViewModel = new SubmittedFormViewModel();
            var context = System.Web.HttpContext.Current.Request;

            submittedFormViewModel.SubmittedFormFields = new List <SubmittedFormFieldViewModel>();
            try
            {
                Logger.Current.Informational("Submitted form from Context: " + context.Form);
                if (formData != null)
                {
                    var getFormData     = formData.ToList();
                    var submittedToForm = formData.Where(c => c.Key == "formid").FirstOrDefault();
                    var formAccountId   = formData.Where(c => c.Key == "accountid").FirstOrDefault();
                    var requestDomain   = formData.Where(c => c.Key == "domainname").FirstOrDefault();
                    var submittedBy     = formData.Where(c => c.Key == "userid").FirstOrDefault();
                    var stiTrackingId   = formData.Where(c => c.Key == "STITrackingID").FirstOrDefault();
                    var link            = formData.Where(c => c.Key == "redirect-override").FirstOrDefault();
                    getFormData.Remove(submittedToForm);
                    getFormData.Remove(formAccountId);
                    getFormData.Remove(requestDomain);
                    getFormData.Remove(submittedBy);
                    getFormData.Remove(stiTrackingId);
                    getFormData.Remove(link);

                    int parsedFormId    = 0;
                    int parsedAccountId = 0;
                    int.TryParse(submittedToForm.Value, out parsedFormId);
                    int.TryParse(formAccountId.Value, out parsedAccountId);

                    if (parsedFormId > 0 && parsedAccountId > 0)
                    {
                        Logger.Current.Verbose("Request received to submit form with ID: " + parsedFormId);


                        try
                        {
                            var frm = getFormData.GroupBy(x => x.Key).Select(x => new
                            {
                                Key   = x.Select(g => g.Key).FirstOrDefault(),
                                value = string.Join("|", x.Select(g => g.Value).ToList())
                            });

                            foreach (var field in frm)
                            {
                                submittedFormViewModel.SubmittedFormFields.Add(new SubmittedFormFieldViewModel()
                                {
                                    Key   = field.Key,
                                    Value = !string.IsNullOrEmpty(field.value) ? field.value.Trim() : field.value
                                });
                            }

                            SubmitFormRequest request = new SubmitFormRequest()
                            {
                                SubmittedFormViewModel = submittedFormViewModel,
                                RequestedBy            = this.UserId,
                                AccountId = parsedAccountId
                            };

                            request.SubmittedFormViewModel.SubmittedOn   = DateTime.Now.ToUniversalTime();
                            request.SubmittedFormViewModel.FormId        = parsedFormId;
                            request.SubmittedFormViewModel.AccountId     = parsedAccountId;
                            request.SubmittedFormViewModel.IPAddress     = requestDomain.Value;
                            request.SubmittedFormViewModel.STITrackingID = stiTrackingId.Value;
                            var domain = accountService.GetAccountDomainUrl(new GetAccountDomainUrlRequest()
                            {
                                AccountId = parsedAccountId
                            }).DomainUrl;

                            var userId = 0;
                            int.TryParse(submittedBy.Value, out userId);

                            request.SubmittedFormViewModel.OwnerId =
                                domain == requestDomain.Value ? userId : 0; // If this is a test form submission domain and requestDomain would be same. Hence, the submitting user will be the owner.

                            formService.SubmitForm(request);
                        }
                        catch (Exception ex)
                        {
                            Logger.Current.Error("Error in form submission: ", ex);
                        }

                        finally
                        {
                            SubmitFormResponse getFormResponse = formService.GetFormAcknowdegement(parsedFormId);
                            Logger.Current.Informational("Response: " + getFormResponse.Acknowledgement.Acknowledgement);
                            formSubmissionResponse = Request.BuildResponse(new FormResponse()
                            {
                                Success             = true,
                                Acknowledgement     = !string.IsNullOrEmpty(link.Value) ? link.Value : getFormResponse.Acknowledgement.Acknowledgement,
                                AcknowledgementType = !string.IsNullOrEmpty(link.Value) ? AcknowledgementType.Url : getFormResponse.Acknowledgement.AcknowledgementType
                            });
                        }
                    }
                    else
                    {
                        formSubmissionResponse = new HttpRequestMessage().CreateResponse(HttpStatusCode.NotAcceptable);
                    }
                }
                else
                {
                    throw new Exception("Received empty form data");
                }
            }
            catch (Exception ex)
            {
                ex.Data.Add("submitteddata", formData);
                Logger.Current.Error("Error in form submission: ", ex);
                formSubmissionResponse = new HttpRequestMessage().CreateResponse(HttpStatusCode.NotAcceptable);
            }
            return(formSubmissionResponse);
        }
        public Guid Post([Bind] FormDataCollection grouppermissionInfo)
        {
            Guid      groupId = Guid.Empty;
            DataTable tb      = new DataTable();


            var lstResource = grouppermissionInfo.ToList();

            lstResource.Add(new KeyValuePair <string, string>("last_100", ""));
            #region Add Title Column
            foreach (var item in lstResource)
            {
                var str = item.Key.Split('_');
                if (int.Parse(str[1]) > 1)
                {
                    break;
                }
                tb.Columns.Add(str[0]);
            }
            #endregion

            #region Add Row
            var      count    = 1;
            var      index    = 0;
            string[] itemData = new string[8];

            foreach (var item in lstResource)
            {
                var flag = false;

                var str = item.Key.Split('_');
                if (int.Parse(str[1]) != count)
                {
                    flag = false;
                }
                if (int.Parse(str[1]) == count)
                {
                    if (tb.Columns.Contains(str[0]))
                    {
                        flag            = true;
                        itemData[index] = item.Value;
                        index++;
                    }
                }
                if (flag == false)
                {
                    DataRow dr = tb.NewRow();
                    dr.ItemArray = itemData;
                    tb.Rows.Add(dr);
                    itemData = new string[8];
                    count++;
                    index = 0;

                    if (int.Parse(str[1]) == count)
                    {
                        if (tb.Columns.Contains(str[0]))
                        {
                            flag            = true;
                            itemData[index] = item.Value;
                            index++;
                        }
                    }
                }
            }
            #endregion

            var rosterGroupServices = new Att_RosterGroupServices();

            rosterGroupServices.SaveRosterGroup(DateTime.Now, tb);

            return(groupId);
        }