public int SaveFormSubmission(FormSubmissionsRecord Submission)
 {
     _formSubmissionsRepository.Insert(Submission);
     return(Submission.Id);
 }
 public void UpdateFormSubmission(FormSubmissionsRecord Submission)
 {
     _formSubmissionsRepository.Update(Submission);
 }
        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));
        }