/// <summary>
        /// Handles the OnClick event of the lbtnLoadData control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void lbtnLoadData_OnClick(object sender, EventArgs e)
        {
            try
            {
                var result = ExternalFormService.WufooLoadData(siteID, Guid.Parse(lbtnLoadData.CommandArgument), rdtpLoadDataDate.SelectedDate.Value);

                if (string.IsNullOrEmpty(result.Message))
                {
                    ucLoadDataMessage.MessageType = NotificationMessageType.Success;
                    ucLoadDataMessage.Text        = "Данные успешно загружены.";
                }
                else
                {
                    ucLoadDataMessage.MessageType = NotificationMessageType.Warning;
                    ucLoadDataMessage.Text        = result.Message;
                }
            }
            catch (Exception ex)
            {
                ucLoadDataMessage.MessageType = NotificationMessageType.Warning;
                ucLoadDataMessage.Text        = "Ошибка загрузки данных.";

                Log.Error("Ошибка загрузки данных.", ex);
            }

            if (!Page.ClientScript.IsStartupScriptRegistered("HideLoadDataRadWindow"))
            {
                ScriptManager.RegisterStartupScript(Page, typeof(Page), "HideLoadDataRadWindow", "HideLoadDataRadWindow();", true);
            }
        }
        public void ProcessRequest(HttpContext context)
        {
            Guid _siteActivityRuleExternalFormID;
            var  async = false;

            if (!string.IsNullOrEmpty(context.Request.QueryString["async"]) && context.Request.QueryString["async"] == "true")
            {
                async = true;
            }

            if (Guid.TryParse(context.Request.QueryString["ID"], out _siteActivityRuleExternalFormID))
            {
                try
                {
                    var siteActivityRuleExternalForm = dataManager.SiteActivityRuleExternalForms.SelectById(_siteActivityRuleExternalFormID);

                    var siteActivityRule = dataManager.SiteActivityRules.SelectById(siteActivityRuleExternalForm.SiteActivityRuleID);
                    var siteID           = siteActivityRule.SiteID;
                    var contactID        = async ? Guid.Parse(context.Request.Form["WebCounterUserID"]) : Guid.Parse(context.Request.Params["WebCounterUserID"]);


                    var fields = new List <tbl_SiteActivityRuleExternalFormFields>();
                    fields = dataManager.SiteActivityRuleExternalFormFields.SelectByExternalFormId(_siteActivityRuleExternalFormID).Where(a => a.SiteColumnID != null || a.SysField != null).ToList();

                    var values = context.Request.Params.AllKeys.Select(key => new KeyValuePair <string, string>(key, context.Request.Params[key])).ToList();
                    ExternalFormService.ProceedExternalForm(siteID, _siteActivityRuleExternalFormID, siteActivityRule.Code, contactID, values);

                    /*var contact = dataManager.Contact.SelectById(siteID, contactID);
                     * foreach (var field in fields)
                     * {
                     *  tbl_ContactColumnValues contactColumnValue = null;
                     *  if (field.SiteColumnID != null)
                     *  {
                     *      contactColumnValue = dataManager.ContactColumnValues.Select(contactID, (Guid) field.SiteColumnID);
                     *      if (contactColumnValue == null)
                     *      {
                     *          contactColumnValue = new tbl_ContactColumnValues();
                     *          contactColumnValue.ContactID = contactID;
                     *          contactColumnValue.SiteColumnID = (Guid) field.SiteColumnID;
                     *      }
                     *  }
                     *
                     *
                     *  switch ((FormFieldType)field.FieldType)
                     *  {
                     *      case FormFieldType.Input:
                     *      case FormFieldType.Textarea:
                     *          if (field.SysField != null)
                     *          {
                     *              switch (field.SysField)
                     *              {
                     *                  case "sys_fullname":
                     *                      var nameChecker = new NameChecker(ConfigurationManager.AppSettings["ADONETConnectionString"]);
                     *                      var nameCheck = nameChecker.CheckName(context.Request.Params[field.Name], NameCheckerFormat.FIO, Correction.Correct);
                     *                      if (!string.IsNullOrEmpty(nameCheck))
                     *                      {
                     *                          contact.UserFullName = nameCheck;
                     *                          contact.Surname = nameChecker.Surname;
                     *                          contact.Name = nameChecker.Name;
                     *                          contact.Patronymic = nameChecker.Patronymic;
                     *                          contact.IsNameChecked = nameChecker.IsNameCorrect;
                     *                          if (nameChecker.Gender.HasValue)
                     *                              contact.Gender = (int)nameChecker.Gender.Value;
                     *                      }
                     *                      else
                     *                          contact.UserFullName = context.Request.Params[field.Name];
                     *                      break;
                     *                  case "sys_email":
                     *                      contact.Email = context.Request.Params[field.Name];
                     *                      break;
                     *                  case "sys_phone":
                     *                      contact.Phone = context.Request.Params[field.Name];
                     *                      break;
                     *                  case "sys_surname":
                     *                      contact.Surname = context.Request.Params[field.Name];
                     *                      contact.UserFullName = string.Format("{0} {1} {2}", contact.Surname, contact.Name, contact.Patronymic);
                     *                      break;
                     *                  case "sys_name":
                     *                      contact.Name = context.Request.Params[field.Name];
                     *                      contact.UserFullName = string.Format("{0} {1} {2}", contact.Surname, contact.Name, contact.Patronymic);
                     *                      break;
                     *                  case "sys_patronymic":
                     *                      contact.Patronymic = context.Request.Params[field.Name];
                     *                      contact.UserFullName = string.Format("{0} {1} {2}", contact.Surname, contact.Name, contact.Patronymic);
                     *                      break;
                     *              }
                     *          }
                     *          else
                     *          {
                     *              if (contactColumnValue != null)
                     *                  contactColumnValue.StringValue = context.Request.Params[field.Name];
                     *          }
                     *          break;
                     *      case FormFieldType.Select:
                     *          var siteColumnValues = dataManager.SiteColumnValues.SelectAll((Guid)field.SiteColumnID);
                     *          var columnValue = siteColumnValues.Where(a => a.Value.ToLower() == context.Request.Params[field.Name].ToLower()).FirstOrDefault();
                     *          if (columnValue == null)
                     *          {
                     *              var newColumnValue = new tbl_SiteColumnValues
                     *              {
                     *                  SiteColumnID = (Guid)field.SiteColumnID,
                     *                  Value = context.Request.Params[field.Name]
                     *              };
                     *              columnValue = dataManager.SiteColumnValues.Add(newColumnValue);
                     *          }
                     *
                     *          if (contactColumnValue != null)
                     *              contactColumnValue.SiteColumnValueID = columnValue.ID;
                     *          break;
                     *  }
                     *
                     *  if (contactColumnValue != null)
                     *  {
                     *      if (contactColumnValue.ID == Guid.Empty)
                     *          dataManager.ContactColumnValues.Add(contactColumnValue);
                     *      else
                     *          dataManager.ContactColumnValues.Update(contactColumnValue);
                     *  }
                     *  dataManager.Contact.Update(contact);
                     * }*/

                    //CounterServiceHelper.AddContactActivity(siteID, contactID, ActivityType.FillForm, siteActivityRule.Code);

                    if (!async)
                    {
                        /*context.Response.Clear();
                         * context.Response.Write("<html><head>");
                         * context.Response.Write(String.Format("</head><body onload='document.{0}.submit()'>Отправка запроса...", "ExternalForm"));
                         * context.Response.Write(String.Format("<form name='{0}' method='post' action='{1}'>", "ExternalForm", siteActivityRule.RepostURL));
                         *
                         * foreach (var key in context.Request.Params.AllKeys)
                         *  context.Response.Write(String.Format("<input type='hidden' name='{0}' value='{1}' />", key, context.Request.Params[key]));
                         *
                         * context.Response.Write("</form>");
                         * context.Response.Write("</body></html>");*/

                        context.Response.Redirect(siteActivityRule.RepostURL, false);
                    }
                    else
                    {
                        context.Response.Write("success");
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    context.Response.Write("error");
                }
            }
            if (!string.IsNullOrEmpty(context.Request.QueryString["lead_id"]))
            {
                try
                {
                    var referrer         = context.Request.UrlReferrer.ToString();
                    var siteActivityRule = dataManager.SiteActivityRules.SelectByUrl(referrer);

                    var contactActivityByIP = dataManager.ContactActivity.SelectByIPAndUrl(siteActivityRule.SiteID, context.Request.UserHostAddress, referrer,
                                                                                           ActivityType.ViewPage, DateTime.Now.AddMinutes(-10),
                                                                                           DateTime.Now.AddMinutes(10)).FirstOrDefault();
                    if (contactActivityByIP != null)
                    {
                        var values = context.Request.Params.AllKeys.Select(key => new KeyValuePair <string, string>(key, context.Request.Params[key])).ToList();
                        ExternalFormService.ProceedExternalForm(siteActivityRule.SiteID,
                                                                siteActivityRule.tbl_SiteActivityRuleExternalForms.FirstOrDefault().ID, siteActivityRule.Code,
                                                                contactActivityByIP.ContactID,
                                                                values);

                        if (!string.IsNullOrEmpty(siteActivityRule.RepostURL))
                        {
                            context.Response.Redirect(siteActivityRule.RepostURL, false);
                        }
                        else
                        {
                            context.Response.Write("Форма успешно заполнена.");
                        }
                    }
                    else
                    {
                        Log.Error(string.Format("Лог действий не найден Referrer: {0}; User IP: {1}", referrer, context.Request.UserHostAddress));
                        context.Response.Write("Возникла ошибка при обработке формы");
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    context.Response.Write("error");
                }
            }
        }
Esempio n. 3
0
        public void Run()
        {
            var dataManager = new DataManager();
            var sites       = dataManager.Sites.SelectAll();
            var currentDate = DateTime.Now;

            foreach (var site in sites)
            {
                var forms = dataManager.SiteActivityRules.SelectByRuleType(site.ID, new List <int>()
                {
                    (int)RuleType.WufooForm
                }).ToList();

                foreach (var form in forms)
                {
                    try
                    {
                        if (!form.WufooUpdatePeriod.HasValue)
                        {
                            continue;
                        }

                        switch ((WufooUpdatePeriod)form.WufooUpdatePeriod)
                        {
                        case WufooUpdatePeriod.Hourly:
                            if (form.WufooRevisionDate.HasValue && currentDate.ToString("yyyy-MM-dd HH") == form.WufooRevisionDate.Value.ToString("yyyy-MM-dd HH"))
                            {
                                continue;
                            }
                            break;

                        case WufooUpdatePeriod.Daily:
                            if (form.WufooRevisionDate.HasValue && currentDate.ToString("yyyy-MM-dd") == form.WufooRevisionDate.Value.ToString("yyyy-MM-dd"))
                            {
                                continue;
                            }
                            break;

                        case WufooUpdatePeriod.Manual:
                            continue;
                        }

                        var externalForm = dataManager.SiteActivityRuleExternalForms.Select(form.Code, form.ID);
                        if (externalForm == null || !externalForm.tbl_SiteActivityRuleExternalFormFields.Any())
                        {
                            continue;
                        }


                        var revisionDate = DateTime.Now;
                        if (!form.WufooRevisionDate.HasValue)
                        {
                            form.WufooRevisionDate = revisionDate;
                        }

                        ExternalFormService.WufooLoadData(site.ID, externalForm.SiteActivityRuleID, form.WufooRevisionDate.Value.Date.AddDays(-2));

                        //var client = new WufooClient(form.WufooName, form.WufooAPIKey);
                        //var wufooForm = client.GetAllForms().FirstOrDefault(o => o.Hash == form.Code);
                        //IEnumerable<Entry> entries = null;
                        //var fb = new FilterBuilder(FilterMatchType.And);
                        //fb.IsAfter("DateCreated", form.WufooRevisionDate.Value);
                        //entries = client.GetEntriesByFormId(wufooForm.Hash, fb, new Sort("DateCreated", SortDirection.Asc)).ToList();

                        //foreach (var entry in entries)
                        //{
                        //    ExternalFormService.ProceedExternalForm(CurrentUser.Instance.SiteID, externalForm.ID, wufooForm.Hash,
                        //                                            null, entry.Responses,
                        //                                            string.Format("{0}${1}${2}", site.ID, wufooForm.Hash, entry.EntryId), entry.DateCreated);
                        //}

                        form.WufooRevisionDate = revisionDate;
                        dataManager.SiteActivityRules.Update(form);
                    }
                    catch (Exception ex)
                    {
                        Log.Error(string.Format("Ошибка обработки формы: {0}", form.Code), ex);
                    }
                }
            }
        }