public ActionResult SubmissionUpdate(SubmissionModel model, bool print)
        {
            int submissionid = Int32.Parse(Request["submissionid"]);
            int formid       = Int32.Parse(Request["formid"]);
            //get form fields (isforadminonly == true)
            var formfields = _formService.GetFormFieldsNoPaging(formid).Where(f => f.IsForAdminOnly == true).ToList();

            //get fields values from request
            foreach (var field in formfields)
            {
                string fieldvalue = Request["field" + field.Id];

                int valueid = Int32.Parse(Request["valueid_" + field.Id]);
                if (valueid > 0)
                {
                    //update field value
                    var submissionvalue = _formService.GetSubmissionFieldValue(submissionid, field.Id);
                    submissionvalue.FieldValue = fieldvalue;
                    _formService.UpdateFieldValue(submissionvalue);
                }
                else
                {
                    //insert field value
                    var submissionvalue = new FormSubmissionsValuesRecord();
                    submissionvalue.FieldValue   = fieldvalue;
                    submissionvalue.FormFieldId  = field.Id;
                    submissionvalue.SubmissionId = submissionid;
                    _formService.SaveFieldValue(submissionvalue);
                }
            }

            if (print)
            {
                var    filepath    = _printFormService.CreateFormPdf(submissionid);
                var    filename    = Path.GetFileName(filepath);
                byte[] filedata    = System.IO.File.ReadAllBytes(filepath);
                string contentType = MimeMapping.GetMimeMapping(filepath);

                var cd = new System.Net.Mime.ContentDisposition
                {
                    FileName = filename,
                    Inline   = true,
                };

                Response.Headers.Add("Content-Disposition", cd.ToString());

                return(File(filedata, contentType));
            }

            return(View("Submissions"));
        }
        public JsonResult FormSubmit()
        {
            try
            {
                var formidstr = Request["formid"];
                int formid;
                if (formidstr != null && formidstr != "" && Int32.TryParse(formidstr, out formid))
                {
                    var form            = _formService.GetFormById(formid);
                    var currentCustomer = _authenticationService.GetAuthenticatedCustomer();

                    string emailbody = "";
                    emailbody += "<b>A new " + form.FormName + " submitted with the below details:</b><hr/>";

                    //add new form submission
                    var formsubmission = new FormSubmissionsRecord();
                    formsubmission.FormId = formid;
                    if (currentCustomer != null)
                    {
                        formsubmission.CustomerId  = currentCustomer.Id;
                        formsubmission.SenderEmail = currentCustomer.Email;
                    }
                    formsubmission.SubmitDate = DateTime.Now;
                    int submissionid = _formService.SaveFormSubmission(formsubmission);
                    //get form fields
                    var formfields = _formService.GetFormFieldsNoPaging(formid).ToList();
                    //get fields values
                    //add new submission value for each field
                    foreach (var field in formfields)
                    {
                        string fieldvalue = "";
                        if (!field.IsForAdminOnly)
                        {
                            fieldvalue = Request["field" + field.Id];
                        }
                        FormSubmissionsValuesRecord valuerecord = new FormSubmissionsValuesRecord();
                        valuerecord.FieldValue   = fieldvalue;
                        valuerecord.FormFieldId  = field.Id;
                        valuerecord.SubmissionId = submissionid;
                        _formService.SaveFieldValue(valuerecord);
                        if (!field.FieldType.Contains("Display"))
                        {
                            emailbody += "<b>" + field.FieldName + ":</b>" + fieldvalue + "<br/>";
                        }
                    }
                    emailbody += "<br/>click <a href='" + _storeContext.CurrentStore.Url + "Admin/Forms/SubmissionPreview/" + submissionid.ToString() + "'>here</a> to view submitted form";
                    //send email to form admin that a new form was submitted
                    var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
                    var toemails     = form.AdminEmails.Split(',');
                    foreach (var toemail in toemails)
                    {
                        try
                        {
                            _emailSender.SendEmail(emailAccount, "New " + form.FormName + " submitted.", emailbody, (currentCustomer != null ? currentCustomer.Email : emailAccount.Email), (currentCustomer != null ? currentCustomer.Username : emailAccount.DisplayName), toemail, toemail);
                        }
                        catch
                        {
                        }
                    }
                    return(Json(form.FormName + " successfully submitted.", JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
            }
            return(Json("Error occured! please try again later or contact administration.", JsonRequestBehavior.AllowGet));
        }