コード例 #1
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();
            }
        }
コード例 #2
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);
                }
            }
        }