protected void FormBuilderField_SaveButton_Click(object sender, EventArgs e)
        {
            int typeId = int.Parse(FieldTypesList.Text);

            FormBuilderDataContext dc    = new FormBuilderDataContext();
            FormBuilder_Field      field = (from f in dc.FormBuilder_Fields
                                            where f.Id == this.FieldId
                                            select f).FirstOrDefault();

            if (field == null)
            {
                field = new FormBuilder_Field();

                field.ModuleId = this.ModuleId;

                var maxSortOrder = (from f in dc.FormBuilder_Fields
                                    where f.ModuleId == field.ModuleId
                                    orderby f.SortOrder descending
                                    select f.SortOrder).FirstOrDefault();
                field.SortOrder = maxSortOrder + 1;

                dc.FormBuilder_Fields.InsertOnSubmit(field);
            }
            else
            {
                field = (from f in dc.FormBuilder_Fields
                         where f.Id == this.FieldId
                         select f).Single();
            }


            field.Name = FieldName.Text.Trim();
            field.Type = typeId;
            field.SetFieldOptions(FormBuilderFieldOption_edit1.FieldOptions);
            field.IsRequired = IsFieldRequired.Checked;
            field.Width      = string.IsNullOrEmpty(FieldWidth.Text) ? null : (int?)int.Parse(FieldWidth.Text);
            dc.SubmitChanges();

            if (this.IsNew)
            {
                Bss.Web.UI.UITool.Clear(this);
                FormBuilderFieldOption_edit1.FieldOptions.Clear();
                FormBuilderFieldOption_edit1.DataBind();
                Msg.ShowSuccess(string.Format("Added the '{0}' field to the form.", field.Name));
                SetReloadFlag(true);
            }
            else
            {
                if (field.SortOrder <= 1)
                {
                    FormBuilder_Field.MoveUp(field.Id);
                }
                Msg.ShowSuccess(string.Format("Saved the '{0}' field settings.", field.Name));
            }
        }
        private void LoadFields()
        {
            FormBuilder.FormBuilderDataContext dc = new FormBuilderDataContext();
            var fields = from f in dc.FormBuilder_Fields
                         where f.ModuleId == this.ModuleId
                         orderby f.SortOrder
                         select f;

            FieldsList.DataSource = fields;
            FieldsList.DataBind();
        }
Exemple #3
0
        private void LoadInitialData()
        {
            if (ResponseId > 0)
            {
                FormBuilderDataContext dc = new FormBuilderDataContext();
                var response = (from r in dc.FormBuilder_Responses
                                where r.ModuleId == this.ModuleId &&
                                r.Id == ResponseId
                                select r).FirstOrDefault();

                if (response != null)
                {
                    // load the data
                    WebControl ctl = null;

                    foreach (var fi in response.FormBuilder_FieldInputs)
                    {
                        if (TryGetDictionaryValue(fi.FormBuilder_Field, out ctl))
                        {
                            if (fi.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.ShortText ||
                                fi.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.LongText)
                            {
                                ((TextBox)ctl).Text = fi.InputValue;
                            }
                            else if (fi.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.CheckBox)
                            {
                                ((CheckBoxList)ctl).SelectedIndex =
                                    ((CheckBoxList)ctl).Items.IndexOf(
                                        ((CheckBoxList)ctl).Items.FindByValue(
                                            fi.InputValue));
                            }
                            else if (fi.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.DropDownList)
                            {
                                ((DropDownList)ctl).SelectedIndex =
                                    ((DropDownList)ctl).Items.IndexOf(
                                        ((DropDownList)ctl).Items.FindByValue(
                                            fi.InputValue));
                            }
                            else if (fi.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.RadioButton)
                            {
                                ((RadioButtonList)ctl).SelectedIndex =
                                    ((RadioButtonList)ctl).Items.IndexOf(
                                        ((RadioButtonList)ctl).Items.FindByValue(
                                            fi.InputValue));
                            }
                            else if (fi.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.FileUpload)
                            {
                                ((FileUpload)ctl).Attributes["value"] = fi.InputValue;
                            }
                        }
                    }
                }
            }
        }
        /* added - SM */

        public static Dictionary <string, string> GetResponseByResponseId(int responseId)
        {
            FormBuilderDataContext dc = new FormBuilderDataContext();
            var values = from f in dc.FormBuilder_Fields
                         from i in dc.FormBuilder_FieldInputs
                         where f.Id == i.FieldId
                         where i.ResponseId == responseId
                         select new { f.Id, f.Name, f.Type, i.InputValue };

            var response = (from r in dc.FormBuilder_Responses
                            where r.Id == responseId
                            select r).Single();


            var dict = new Dictionary <string, string>();

            foreach (var value in values)
            {
                string strKey   = string.Format("{0}_{1}", value.Name, value.Id);
                string strValue = value.InputValue;

                if (value.Type == (int)FormBuilder_Field.FieldType.FileUpload)
                {
                    if (!string.IsNullOrEmpty(strValue))
                    {
                        string strUrl = new WebModuleBase().ResolveUrl(value.InputValue.Replace("~", "").Replace("//", "/").Replace(@"\", ""));
                        strValue = String.Format("<a href='{0}' target='_blank'>{0}</a>", strUrl);
                    }
                }
                dict.Add(strKey, strValue);
            }
            //add the ip addr etc.
            dict.Add("Is Complete", response.IsComplete ? "Yes" : "No");
            dict.Add("IP Address", response.IPAddress);
            dict.Add("Submitted On", response.CreatedOn.ToString("MM/dd/yyyy"));
            dict.Add("Submitted By", response.CreatedBy);

            // add referrer and keywords
            var referrer = (from r in dc.FormBuilder_ResponseReferrers
                            where r.ResponseId == responseId
                            select r).FirstOrDefault();

            if (referrer != null)
            {
                dict.Add("Referring Url", referrer.referringUrl);
                dict.Add("Landing Url", referrer.landingUrl);
                dict.Add("Referring Domain", referrer.domain);
                dict.Add("Keywords", referrer.query);
            }


            return(dict);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                FormBuilderDataContext dc = new FormBuilderDataContext();
                ddlTemplates.DataSource = from t in dc.FormBuilder_Templates
                                          select t;
                ddlTemplates.DataBind();

                InitModule();
                LoadModule();
            }
        }
Exemple #6
0
        protected void grdSubmissions_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Sort")
            {
                this.SortBy        = e.CommandArgument.ToString();
                this.SortDirection = this.SortDirection == "ASC" ? "DESC" : "ASC";
                ShowList();
                return;
            }

            if (e.CommandName == "Select")
            {
                int           rowNum               = int.Parse(e.CommandArgument.ToString());
                int           responseId           = int.Parse(grdSubmissions.DataKeys[rowNum].Value.ToString());
                StringBuilder sb                   = new StringBuilder();
                Dictionary <string, string> values = FormBuilder_Response.GetResponseByResponseId(responseId);

                //DataRow row = dt.Rows[rowNum];
                sb.Append("<table class='submission-detail' cellpadding='5'>");
                foreach (string key in values.Keys)
                {
                    string strHeaderText = GetHeaderText(key);
                    string strValue      = (string)values[key];

                    sb.AppendFormat("<tr><td>{0}:</td><td><b>{1}</b></td>", strHeaderText, strValue);
                }


                sb.Append("</table>");
                divDetail.InnerHtml = sb.ToString();
                mvwSubmission.SetActiveView(vwDetail);
            }

            if (e.CommandName == "Delete")
            {
                int rowNum                      = int.Parse(e.CommandArgument.ToString());
                int responseId                  = int.Parse(grdSubmissions.DataKeys[rowNum].Value.ToString());
                FormBuilderDataContext dc       = new FormBuilderDataContext();
                FormBuilder_Response   response = (from r in dc.FormBuilder_Responses
                                                   where r.Id == responseId
                                                   select r).FirstOrDefault();

                if (response != null)
                {
                    response.Id = responseId;
                    dc.FormBuilder_Responses.DeleteOnSubmit(response);
                    dc.SubmitChanges();
                }
                ShowList();
            }
        }
        /// <summary>
        /// Checks that the custom module data exists. If the custom module
        /// object cannot be retrieved (e.g., this is the initial creation of
        /// the module), then a new module object is created using the module
        /// id assigned by the CMS.
        /// </summary>
        private void EnsureModule()
        {
            FormBuilder.FormBuilderDataContext dc = new FormBuilderDataContext();
            FormBuilder_Module formBuilderModule  = (from m in dc.FormBuilder_Modules
                                                     where m.ModuleId == this.ModuleId
                                                     select m).FirstOrDefault();

            if (formBuilderModule == null)
            {
                formBuilderModule          = new FormBuilder_Module();
                formBuilderModule.ModuleId = this.ModuleId;
                dc.FormBuilder_Modules.InsertOnSubmit(formBuilderModule);
                dc.SubmitChanges();
            }
        }
        public void SaveAsTemplateField(int templateId, int sortOrder)
        {
            FormBuilderDataContext     dc     = new FormBuilderDataContext();
            FormBuilder_Template_Field newRec = new FormBuilder_Template_Field();

            dc.FormBuilder_Template_Fields.InsertOnSubmit(newRec);

            newRec.TemplateId = templateId;
            newRec.Name       = FieldName.Text.Trim();
            newRec.Type       = int.Parse(FieldTypesList.Text);;
            newRec.SetFieldOptions(FormBuilderFieldOption_edit1.FieldOptions);
            newRec.IsRequired = IsFieldRequired.Checked;
            newRec.SortOrder  = sortOrder;
            newRec.Width      = string.IsNullOrEmpty(FieldWidth.Text) ? null : (int?)int.Parse(FieldWidth.Text);
            dc.SubmitChanges();
        }
        protected void FormBuilderModule_SaveButton_Click(object sender, EventArgs e)
        {
            if (!Page.IsValid)
            {
                return;
            }


            FormBuilderDataContext dc = new FormBuilderDataContext();
            FormBuilder_Module     FormBuilderModule;

            GetInput_FormBuilderModule(dc, out FormBuilderModule);
            dc.SubmitChanges();

            cms.Admin.RedirectToMainMenu(this.PageNavigationId);
        }
        protected void SaveTemplate_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tbTemplateName.Text.Trim()))
            {
                // Make the sure entered a template name
                ScriptManager.RegisterStartupScript(this, this.GetType(), "TemplateNameMessage",
                                                    "alert('Please enter a template name.');", true);
                return;
            }

            FormBuilderDataContext dc       = new FormBuilderDataContext();
            FormBuilder_Template   template = (from t in dc.FormBuilder_Templates
                                               where t.Name == tbTemplateName.Text.Trim()
                                               select t).FirstOrDefault();

            if (template != null)
            {
                dc.FormBuilder_Template_Fields.DeleteAllOnSubmit(template.FormBuilder_Template_Fields);
            }
            else
            {
                template      = new FormBuilder_Template();
                template.Name = tbTemplateName.Text.Trim();
                dc.FormBuilder_Templates.InsertOnSubmit(template);
            }
            dc.SubmitChanges();
            int templateId = template.Id;

            int sortOrder = 1;

            foreach (RepeaterItem repItem in FieldsList.Items)
            {
                FormBuilderField_edit editCtl = repItem.FindControl("FormBuilderField_edit2") as FormBuilderField_edit;
                editCtl.SaveAsTemplateField(templateId, sortOrder++);
            }

            ScriptManager.RegisterStartupScript(this, this.GetType(), "TemplateSaveMessage",
                                                "alert('Your template has been saved.');", true);

            ddlTemplates.DataSource = from t in dc.FormBuilder_Templates
                                      select t;

            ddlTemplates.DataBind();    // update template list
        }
        protected void FormBuilderField_DeleteButton_Click(object sender, EventArgs e)
        {
            FormBuilderDataContext dc = new FormBuilderDataContext();

            var fieldInputsToDelete = from fi in dc.FormBuilder_FieldInputs
                                      where fi.FieldId == this.FieldId
                                      select fi;

            dc.FormBuilder_FieldInputs.DeleteAllOnSubmit(fieldInputsToDelete);

            var fieldToDelete = (from f in dc.FormBuilder_Fields
                                 where f.Id == this.FieldId
                                 select f).Single();

            dc.FormBuilder_Fields.DeleteOnSubmit(fieldToDelete);
            dc.SubmitChanges();

            SetReloadFlag(true);
        }
        /// <summary>
        /// Gets the current object and fills its with the form input values.
        /// If input is not valid, returns null.
        /// </summary>
        public void GetInput_FormBuilderModule(FormBuilderDataContext dc, out FormBuilder_Module module)
        {
            module = (from m in dc.FormBuilder_Modules
                      where m.ModuleId == this.ModuleId
                      select m).Single();

            module.NotifyEmail        = NotifyEmailCtl.Text.Trim();
            module.ConfirmationPageId = ConfirmationPageIdCtl.SelectedNavigationId > 0
                ? (int?)ConfirmationPageIdCtl.SelectedNavigationId
                : null;
            module.StyleName        = StyleDropDown.SelectedValue;
            module.SubmitButtonText = tbSubmitButtonText.Text.Trim();

            module.Ack_Enabled = chkAcknowledgementEnabled.Checked;
            module.Ack_Body    = txtAcknowledgementBody.Text.Length > 4000 ? txtAcknowledgementBody.Text.Trim().Substring(0, 4000) : txtAcknowledgementBody.Text.Trim();
            module.Ack_EmailAddressFieldLabel = txtAcknowledgementEmailField.Text.Trim();
            module.Ack_FromEmailAddress       = txtAcknowledgementFromEmail.Text.Trim();
            module.Ack_Subject = txtAcknowledgementSubject.Text.Trim();
        }
        protected void DeleteTemplate_Click(object sender, EventArgs e)
        {
            FormBuilderDataContext dc = new FormBuilderDataContext();

            int nTemplateId = int.Parse(ddlTemplates.SelectedValue);

            FormBuilder_Template template = (from t in dc.FormBuilder_Templates
                                             where t.Id == nTemplateId
                                             select t).FirstOrDefault();

            // Cascade delete takes care of field records
            if (template != null)
            {
                dc.FormBuilder_Templates.DeleteOnSubmit(template);
                dc.SubmitChanges();
            }

            ddlTemplates.DataSource = from t in dc.FormBuilder_Templates
                                      select t;

            ddlTemplates.DataBind();
        }
        private void LoadModule()
        {
            FormBuilder.FormBuilderDataContext dc = new FormBuilderDataContext();
            FormBuilder_Module FormBuilderModule  = (from m in dc.FormBuilder_Modules
                                                     where m.ModuleId == this.ModuleId
                                                     select m).Single();

            NotifyEmailCtl.Text = FormBuilderModule.NotifyEmail;
            ConfirmationPageIdCtl.SelectedNavigationId = FormBuilderModule.ConfirmationPageId.HasValue
                ? FormBuilderModule.ConfirmationPageId.Value
                : -1;
            StyleDropDown.SelectedValue     = FormBuilderModule.StyleName;
            tbSubmitButtonText.Text         = FormBuilderModule.SubmitButtonText;
            FormBuilderField_edit1.ModuleId = this.ModuleId;

            chkAcknowledgementEnabled.Checked = pnlEmailAcknowledgement.Visible = FormBuilderModule.Ack_Enabled;
            txtAcknowledgementBody.Text       = FormBuilderModule.Ack_Body;
            txtAcknowledgementEmailField.Text = FormBuilderModule.Ack_EmailAddressFieldLabel;
            txtAcknowledgementFromEmail.Text  = FormBuilderModule.Ack_FromEmailAddress;
            txtAcknowledgementSubject.Text    = FormBuilderModule.Ack_Subject;

            LoadFields();
        }
        protected void LoadTemplate_Click(object sender, EventArgs e)
        {
            int nTemplateId = int.Parse(ddlTemplates.SelectedValue);

            FormBuilderDataContext dc = new FormBuilderDataContext();
            var templateFields        = from tf in dc.FormBuilder_Template_Fields
                                        where tf.TemplateId == nTemplateId
                                        orderby tf.SortOrder
                                        select tf;

            int highestSortOrder = (from f in dc.FormBuilder_Fields
                                    where f.ModuleId == this.ModuleId
                                    orderby f.SortOrder descending
                                    select f.SortOrder).FirstOrDefault();

            foreach (var templateField in templateFields)
            {
                FormBuilder_Field field = new FormBuilder_Field();

                field.ModuleId = this.ModuleId;
                dc.FormBuilder_Fields.InsertOnSubmit(field);

                highestSortOrder += 1;

                field.SortOrder = highestSortOrder; //add to the bottom of the form

                field.Name       = templateField.Name;
                field.Type       = templateField.Type;
                field.Options    = templateField.Options;
                field.HelpText   = templateField.HelpText;
                field.IsRequired = templateField.IsRequired;
                field.Width      = templateField.Width;
            }
            dc.SubmitChanges();
            LoadFields();
        }
        public static DataTable CreateDataTable(List <FormBuilder_FieldInput> fieldInputs, bool truncateLongStrings)
        {
            if (null == fieldInputs || fieldInputs.Count == 0)
            {
                return(null);
            }
            var dt = new DataTable();

            int nModuleId = fieldInputs[0].FormBuilder_Field.ModuleId;

            FormBuilderDataContext dc = new FormBuilderDataContext();
            var fields = from f in dc.FormBuilder_Fields
                         where f.ModuleId == nModuleId
                         select f;

            //standard fields
            dt.Columns.Add(new DataColumn("CreatedOn", typeof(DateTime)));

            var pageCount = 0;

            //form-specific fields
            foreach (FormBuilder_Field field in fields)
            {
                // Must guarantee unique column names in DataTable
                dt.Columns.Add(field.Name + "_" + field.Id);
                //check if this is a multipage form
                if (field.Type == (int)FormBuilder_Field.FieldType.PageHeader)
                {
                    pageCount++;
                }
            }

            var isMultiPage = pageCount > 0;

            if (isMultiPage)
            {
                dt.Columns.Add("IsComplete");
            }

            //standard fields
            dt.Columns.Add("CreatedBy");
            dt.Columns.Add("IPAddress");
            dt.Columns.Add("ResponseId");

            //keep track of responses that have been added already
            var responseIds = new List <int>();

            foreach (FormBuilder_FieldInput fieldInput in fieldInputs)
            {
                if (!responseIds.Contains(fieldInput.ResponseId))
                {
                    responseIds.Add(fieldInput.ResponseId);
                    //get all the inputs for this response.
                    var assocInputs = new List <FormBuilder_FieldInput>();
                    foreach (var fi in fieldInputs)
                    {
                        if (fi.ResponseId == fieldInput.ResponseId)
                        {
                            assocInputs.Add(fi);
                        }
                    }

                    //add the respective row.
                    DataRow dr = dt.NewRow();
                    FormBuilder_Response response = fieldInput.FormBuilder_Response;
                    if (isMultiPage)
                    {
                        dr["IsComplete"] = response.IsComplete ? "Yes" : "No";
                    }
                    dr["CreatedBy"] = response.CreatedBy;
                    dr["CreatedOn"] = response.CreatedOn;
                    dr["IPAddress"] = response.IPAddress;
                    foreach (FormBuilder_FieldInput i in assocInputs)
                    {
                        dr[i.FormBuilder_Field.Name + "_" + i.FormBuilder_Field.Id] =
                            (truncateLongStrings ? Truncate(i.InputValue) : i.InputValue);
                    }
                    dr["ResponseId"] = fieldInput.ResponseId;
                    dt.Rows.Add(dr);
                }
            }

            return(dt);
        }
        public void EmailNotifyAdmin()
        {
            try
            {
                var body = new StringBuilder();

                string   strNotifyEmails  = this.FormBuilder_Module.NotifyEmail;
                string[] astrNotifyEmails = strNotifyEmails.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
                if (astrNotifyEmails.Length > 0)
                {
                    WebModuleInfo module = WebModule.GetModule(this.FormBuilder_Module.ModuleId);

                    var dbContext = new FormBuilderDataContext();
                    List <FormBuilder_FieldInput> lInputsSorted = (from i in dbContext.FormBuilder_FieldInputs
                                                                   where i.ResponseId == this.Id
                                                                   orderby i.FormBuilder_Field.SortOrder
                                                                   select i).ToList();

                    foreach (var input in lInputsSorted)
                    {
                        if (input.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.FileUpload &&
                            !String.IsNullOrEmpty(input.InputValue))
                        {
                            body.Append(input.FormBuilder_Field.Name
                                        + String.Format(": <b>{0}",
                                                        input.InputValue.Replace("~", "").Replace("//", "").Replace(@"\", "")) + "</b><br>");
                        }
                        else if (input.FormBuilder_Field.Type == (int)FormBuilder_Field.FieldType.SectionHeader)
                        {
                            body.Append(String.Format("<br/><b>{0}</b><br/>", input.FormBuilder_Field.Name));
                        }
                        else
                        {
                            body.Append(input.FormBuilder_Field.Name + ": <b>" + input.InputValue + "</b><br>");
                        }
                    }

                    MailMessage email = new MailMessage();
                    foreach (string strNotifyEmail in astrNotifyEmails)
                    {
                        MailAddress address = new MailAddress(strNotifyEmail.Trim());
                        email.To.Add(address);
                    }

                    email.Body = "<font face='Arial'>New form response submission has been received.<br>" +
                                 "<hr>" + body + "<br>" +
                                 "To view all form responses, " +
                                 "<a href='" + Common.Web.Url.ToAbsoluteUrl(module.GetEditUrl()) + "'>click here</a>." +
                                 "</font>";

                    email.Subject = string.Format("{0}: {1}",
                                                  Website.Current.Resource.Name,
                                                  module.Webpage.Title);

                    email.IsBodyHtml = true;

                    new SmtpClient().Send(email);
                }
            }
            catch (Exception ex)
            {
                string strMessage = "Failed sending contact us notification message";
                BayshoreSolutions.WebModules.WebModulesAuditEvent.Raise(strMessage, this, ex);
            }
        }
        public void EmailAcknowledgement()
        {
            try
            {
                var dc = new FormBuilderDataContext();
                FormBuilder_Module form = FormBuilder_Module;

                if (form.Ack_Enabled)
                {
                    var message = new MailMessage();

                    string   strNotifyEmails  = this.FormBuilder_Module.NotifyEmail;
                    string[] astrNotifyEmails = strNotifyEmails.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
                    if (astrNotifyEmails.Length > 0)
                    {
                        foreach (string strNotifyEmail in astrNotifyEmails)
                        {
                            MailAddress address = new MailAddress(strNotifyEmail.Trim());
                            message.Bcc.Add(address);
                        }
                    }

                    if (!string.IsNullOrEmpty(form.Ack_FromEmailAddress))
                    {
                        message.From = new MailAddress(form.Ack_FromEmailAddress);
                    }

                    List <FormBuilder_FieldInput> inputs = (from fi in dc.FormBuilder_FieldInputs
                                                            where fi.ResponseId == Id
                                                            select fi).ToList();

                    //sort by SortOrder.
                    inputs.Sort(delegate(FormBuilder_FieldInput a, FormBuilder_FieldInput b)
                    {
                        return(a.FormBuilder_Field.SortOrder.CompareTo(b.FormBuilder_Field.SortOrder));
                    });

                    var sbSubject = new StringBuilder(form.Ack_Subject);
                    var sbBody    = new StringBuilder(form.Ack_Body);

                    foreach (FormBuilder_FieldInput input in inputs)
                    {
                        if (string.Compare(input.FormBuilder_Field.Name, form.Ack_EmailAddressFieldLabel, true) == 0)
                        {
                            message.To.Add(new MailAddress(input.InputValue));
                        }

                        string strToken = string.Format("##{0}##", input.FormBuilder_Field.Name);
                        sbSubject = sbSubject.Replace(strToken, input.InputValue);
                        sbSubject = sbSubject.Replace(strToken.ToLower(), input.InputValue);
                        sbSubject = sbSubject.Replace(strToken.ToUpper(), input.InputValue);
                        sbBody    = sbBody.Replace(strToken, input.InputValue);
                        sbBody    = sbBody.Replace(strToken.ToLower(), input.InputValue);
                        sbBody    = sbBody.Replace(strToken.ToUpper(), input.InputValue);
                    }

                    if (message.To.Count > 0)
                    {
                        message.Subject    = sbSubject.ToString();
                        message.Body       = sbBody.ToString();
                        message.IsBodyHtml = true;

                        var smtpClient = new SmtpClient();
                        smtpClient.Send(message);
                    }
                }
            }
            catch (Exception ex)
            {
                WebModulesAuditEvent.Raise("Failed sending acknowledgement email", this, ex);
            }
        }
Exemple #19
0
        private void SaveIncrementalFormData()
        {
            FormBuilderDataContext dc   = new FormBuilderDataContext();
            FormBuilder_Module     form = (from m in dc.FormBuilder_Modules
                                           where m.ModuleId == this.ModuleId
                                           select m).Single();

            //save the form object.
            FormBuilder_Response formResponse = (from r in dc.FormBuilder_Responses
                                                 where r.Id == ResponseId
                                                 select r).FirstOrDefault();

            if (formResponse == null)
            {
                formResponse = new FormBuilder_Response();
                dc.FormBuilder_Responses.InsertOnSubmit(formResponse);
                formResponse.ModuleId  = this.ModuleId;
                formResponse.CreatedBy = this.Page.User.Identity.Name;
                formResponse.CreatedOn = DateTime.Now;
                formResponse.IPAddress = this.Page.Request.UserHostAddress;

                dc.SubmitChanges();
                ResponseId = formResponse.Id;
            }

            //save input for each form field.
            foreach (FormBuilder_Field f in _fields_controls.Keys)
            {
                FormBuilder_FieldInput fieldInput = (from fi in dc.FormBuilder_FieldInputs
                                                     where fi.ResponseId == ResponseId
                                                     where fi.FieldId == f.Id
                                                     select fi).FirstOrDefault();
                if (fieldInput == null)
                {
                    fieldInput = new FormBuilder_FieldInput();
                    dc.FormBuilder_FieldInputs.InsertOnSubmit(fieldInput);
                }

                fieldInput.ResponseId = formResponse.Id;
                fieldInput.FieldId    = f.Id;
                if (f.Type == (int)FormBuilder_Field.FieldType.FileUpload)
                {
                    WebControl fi;
                    _fields_controls.TryGetValue(f, out fi);

                    if (((FileUpload)fi).HasFile)
                    {
                        var fiUploadFile = new FileInfo(((FileUpload)fi).FileName);
                        var sFileName    = fiUploadFile.Name.Substring(0, fiUploadFile.Name.LastIndexOf("."))
                                           + "_" + Guid.NewGuid() + fiUploadFile.Extension;
                        var uploadPath = this.MapPath(ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"]) +
                                         "\\" + sFileName;
                        ((FileUpload)fi).SaveAs(uploadPath);
                        fieldInput.InputValue = ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"] + "\\" + sFileName;
                    }
                }
                else
                {
                    fieldInput.SetInputValueFromControlValue(_fields_controls[f]);
                }

                dc.SubmitChanges();
            }
        }
Exemple #20
0
        //create controls *before* viewstate is restored.
        //ASP.NET restores the viewstate tree based on the control tree. As long as
        //we re-create the control tree identically on each postback, the viewstate
        //will get restored automatically.
        //see http://geekswithblogs.net/FrostRed/archive/2007/02/17/106547.aspx
        protected override void OnInit(EventArgs e)
        {
            FormBuilderDataContext dc       = new FormBuilderDataContext();
            FormBuilder_Module     settings = (from m in dc.FormBuilder_Modules
                                               where m.ModuleId == this.ModuleId
                                               select m).Single();


            List <FormBuilder_Field> lFields       = settings.FormBuilder_Fields.OrderBy(x => x.SortOrder).ToList();
            IList <Panel>            pnlCollection = GetPanelControls(lFields);

            if (pnlCollection != null && pnlCollection.Count > 0)
            {
                #region Form Page Creation
                int pnlCount = pnlCollection.Count;
                if (pnlCount >= 1)
                {
                    for (int i = 0; i < pnlCount; i++)
                    {
                        string sortOrder = String.Empty;
                        string clientId  = String.Empty;
                        try
                        {
                            if (pnlCollection[i + 1] != null)
                            {
                                sortOrder = pnlCollection[i + 1].Attributes["SortOrder"];
                                clientId  = pnlCollection[i + 1].ID;
                            }
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            sortOrder = (lFields[lFields.Count - 1].SortOrder + 1).ToString();
                        }

                        FormBuilderResponseValidationSummary.ValidationGroup = FormBuilder_Module.GetValidationGroup(this.ModuleId);

                        List <FormBuilder_Field> childCollection = GetChildCollection(lFields, pnlCollection[i].Attributes["SortOrder"], sortOrder);
                        foreach (FormBuilder_Field f in childCollection)
                        {
                            FormBuilderFieldInput_display ctl = (FormBuilderFieldInput_display)this.LoadControl("FormBuilderFieldInput_display.ascx");
                            if (ctl != null)
                            {
                                ctl.StyleName = settings.StyleName;
                            }
                            FieldInputList.Controls.Add(pnlCollection[i]);
                            pnlCollection[i].Controls.Add(ctl);

                            _fields_controls.Add(f, ctl.LoadField(f));
                        }

                        Button btnNext = BuildButton("Next", i, clientId);
                        Button btnPrev = BuildButton("Previous", i, (i - 1) > 0 ? pnlCollection[i - 1].ID : pnlCollection[0].ID);

                        if (i == 0)
                        {
                            pnlCollection[i].Visible = true;
                            if (pnlCollection.Count > 1)
                            {
                                pnlCollection[i].Controls.Add(btnNext);
                            }
                        }
                        else if (i == pnlCount - 1)
                        {
                            pnlCollection[i].Controls.Add(btnPrev);
                            pnlCollection[i].Controls.Add(BuildButton(String.IsNullOrEmpty(settings.SubmitButtonText) ? "Submit" : settings.SubmitButtonText, i, pnlCollection[i].ID));
                        }
                        else // All other panels
                        {
                            pnlCollection[i].Controls.Add(btnPrev);
                            pnlCollection[i].Controls.Add(btnNext);
                        }
                    }
                }
                #endregion
            }
            else
            {
                #region Form Creation
                foreach (FormBuilder_Field f in lFields)
                {
                    FormBuilderFieldInput_display fieldCtl = (FormBuilderFieldInput_display)this.LoadControl("FormBuilderFieldInput_display.ascx");
                    if (fieldCtl != null)
                    {
                        fieldCtl.StyleName = settings.StyleName;
                    }
                    FieldInputList.Controls.Add(fieldCtl);

                    _fields_controls.Add(f, fieldCtl.LoadField(f));
                }

                FormBuilderResponseValidationSummary.ValidationGroup =
                    FormBuilderResponse_SaveButton.ValidationGroup   =
                        FormBuilder_Module.GetValidationGroup(this.ModuleId);
                buttonDiv.Visible = true;

                FormBuilderResponse_SaveButton.Visible = (null != lFields && lFields.Count > 0);
                if ((settings != null) && (!string.IsNullOrEmpty(settings.SubmitButtonText)))
                {
                    FormBuilderResponse_SaveButton.Text = settings.SubmitButtonText;
                }

                string buttonDivClass;
                if (!string.IsNullOrEmpty(settings.StyleName) && settings.StyleName.ToLower() != "block")
                {
                    buttonDivClass = "field-" + settings.StyleName;
                }
                else
                {
                    buttonDivClass = "field";
                }
                buttonDiv.Attributes.Add("class", buttonDivClass);
                #endregion
            }

            base.OnInit(e);
        }
Exemple #21
0
        private DataTable GetDataTable()
        {
            DataTable dtResults = null;

            DateTime dtStartDate      = Convert.ToDateTime(txtStartDate.Text);
            DateTime dtEndDate        = Convert.ToDateTime(txtEndDate.Text).AddDays(1);
            FormBuilderDataContext dc = new FormBuilderDataContext();

            List <FormBuilder_FieldInput> lFieldInputs = (from fi in dc.FormBuilder_FieldInputs
                                                          from r in dc.FormBuilder_Responses
                                                          where r.ModuleId == this.ModuleId
                                                          where r.CreatedOn >= dtStartDate
                                                          where r.CreatedOn <= dtEndDate
                                                          where fi.ResponseId == r.Id
                                                          orderby fi.FormBuilder_Field.SortOrder
                                                          select fi).ToList();

            if (lFieldInputs.Count > 0)
            {
                DataTable dtFieldInputs = FormBuilder_Response.CreateDataTable(lFieldInputs, true);
                if (dtFieldInputs != null)
                {
                    dtResults = new DataTable();
                    foreach (DataColumn c in dtFieldInputs.Columns)
                    {
                        dtResults.Columns.Add(new DataColumn(c.ColumnName, c.DataType));
                    }

                    var referringUrl = dtResults.Columns.Add();
                    referringUrl.AllowDBNull = true;
                    referringUrl.ColumnName  = "ReferringUrl";
                    referringUrl.DataType    = typeof(string);

                    var landingUrl = dtResults.Columns.Add();
                    landingUrl.AllowDBNull = true;
                    landingUrl.ColumnName  = "LandingUrl";
                    landingUrl.DataType    = typeof(string);

                    var referrer = dtResults.Columns.Add();
                    referrer.AllowDBNull = true;
                    referrer.ColumnName  = "ReferringDomain";
                    referrer.DataType    = typeof(string);

                    var keywords = dtResults.Columns.Add();
                    keywords.AllowDBNull = true;
                    keywords.ColumnName  = "Keywords";
                    keywords.DataType    = typeof(string);

                    foreach (DataRow row in dtFieldInputs.Rows)
                    {
                        var newRow = dtResults.Rows.Add(row.ItemArray);

                        int responseId       = Convert.ToInt32(row["ResponseId"]);
                        var responseReferrer = dc.FormBuilder_ResponseReferrers.Where(r => r.ResponseId == responseId).FirstOrDefault();
                        if (responseReferrer != null)
                        {
                            newRow["ReferringUrl"]    = responseReferrer.referringUrl;
                            newRow["LandingUrl"]      = responseReferrer.landingUrl;
                            newRow["ReferringDomain"] = responseReferrer.domain;
                            newRow["Keywords"]        = responseReferrer.query;
                        }
                    }
                }
            }

            return(dtResults);
        }
Exemple #22
0
        protected void FormBuilderResponse_SaveButton_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                if (ValidateRequest())
                {
                    FormBuilderDataContext dc   = new FormBuilderDataContext();
                    FormBuilder_Module     form = (from f in dc.FormBuilder_Modules
                                                   where f.ModuleId == this.ModuleId
                                                   select f).Single();


                    //save the form object.
                    FormBuilder_Response formResponse = (from r in dc.FormBuilder_Responses
                                                         where r.ModuleId == this.ModuleId &&
                                                         r.Id == ResponseId
                                                         select r).SingleOrDefault();

                    if (formResponse == null)
                    {
                        formResponse = new FormBuilder_Response();
                        dc.FormBuilder_Responses.InsertOnSubmit(formResponse);
                        formResponse.ModuleId  = this.ModuleId;
                        formResponse.CreatedBy = this.Page.User.Identity.Name;
                        formResponse.CreatedOn = DateTime.Now;
                        formResponse.IPAddress = this.Page.Request.UserHostAddress;
                        dc.SubmitChanges();
                    }

                    // save the referrer info (if available)
                    if (Session["session_referrer"] != null)
                    {
                        string referringUrl = Session["session_referringUrl"] as string;
                        string landingUrl   = Session["session_landingUrl"] as string;
                        string domain       = Session["session_referrer"] as string;
                        string query        = Session["session_keywords"] as string;

                        FormBuilder_ResponseReferrer referrer = new FormBuilder_ResponseReferrer();
                        dc.FormBuilder_ResponseReferrers.InsertOnSubmit(referrer);

                        referrer.ResponseId   = formResponse.Id;
                        referrer.referringUrl = referringUrl;
                        referrer.landingUrl   = landingUrl;
                        referrer.domain       = domain;
                        referrer.query        = query;
                        dc.SubmitChanges();
                    }

                    //save input for each form field.
                    foreach (FormBuilder_Field f in _fields_controls.Keys)
                    {
                        // Find any existing field input and update it.
                        FormBuilder_FieldInput fieldInput = (from fi in dc.FormBuilder_FieldInputs
                                                             where fi.ResponseId == formResponse.Id &&
                                                             fi.FieldId == f.Id
                                                             select fi).SingleOrDefault();
                        if (fieldInput == null)
                        {
                            fieldInput = new FormBuilder_FieldInput();
                            dc.FormBuilder_FieldInputs.InsertOnSubmit(fieldInput);
                            fieldInput.FieldId    = f.Id;
                            fieldInput.ResponseId = formResponse.Id;
                        }

                        if (f.Type == (int)FormBuilder_Field.FieldType.FileUpload)
                        {
                            WebControl fi;
                            _fields_controls.TryGetValue(f, out fi);

                            if (((FileUpload)fi).HasFile)
                            {
                                var fiUploadFile = new FileInfo(((FileUpload)fi).FileName);
                                var sFileName    = fiUploadFile.Name.Substring(0, fiUploadFile.Name.LastIndexOf("."))
                                                   + "_" + Guid.NewGuid() + fiUploadFile.Extension;
                                string strUploadDirectory = this.MapPath(ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"]);
                                EnsureDirectory(strUploadDirectory);
                                var uploadPath = Path.Combine(strUploadDirectory, sFileName);
                                ((FileUpload)fi).SaveAs(uploadPath);
                                fieldInput.InputValue = ConfigurationManager.AppSettings["FormBuilder_UploadDirectory"] + "\\" + sFileName;
                            }
                        }
                        else
                        {
                            fieldInput.SetInputValueFromControlValue(_fields_controls[f]);
                        }
                    }

                    formResponse.IsComplete = true;
                    dc.SubmitChanges();

                    //send email notification.
                    formResponse.EmailNotifyAdmin();
                    formResponse.EmailAcknowledgement();
                    ResponseId = 0;

                    //redirect to confirmation page.
                    string redirectPath = "~";
                    if (form.ConfirmationPageId.HasValue)
                    {
                        WebpageInfo page = Webpage.GetWebpage(form.ConfirmationPageId.Value);
                        if (null != page && !string.IsNullOrEmpty(page.Path))
                        {
                            redirectPath = page.Path;
                        }
                    }
                    Response.Redirect(redirectPath);
                }
            }
        }
        private static void MovePosition(int fieldId, bool direction)
        {
            FormBuilderDataContext dc = new FormBuilderDataContext();

            dc.FormBuilder_Field_MovePosition(fieldId, direction);
        }