/// <summary>
        /// Get a specific submitted form with form fields
        /// </summary>
        /// <param name="sequenceId"></param>
        /// <returns></returns>
        public SubmittedForm GetSubmittedForm(int sequenceId)
        {
            SubmittedForm form = new SubmittedForm();

            form.SequenceId = sequenceId;
            using (SqlConnection sqlConnection = new SqlConnection(connectionString))
            {
                try
                {
                    sqlConnection.Open();
                    var getSubmittedFormSQL = new SqlCommand(SELECT_SUBMITTED_FORM_FIELDS, sqlConnection);
                    getSubmittedFormSQL.Parameters.Add("@Id", SqlDbType.Int).Value = sequenceId;
                    SqlDataReader reader = getSubmittedFormSQL.ExecuteReader();
                    form.FormData = new FormCollection();
                    while (reader.Read())
                    {
                        string name  = reader.GetString(0);
                        string value = reader.GetString(1);
                        Log.Info("Form " + name + " = " + value);
                        form.FormData.Add(name, value);
                    }
                    return(form);
                }
                catch (Exception e)
                {
                    throw new DxaException("Could not get all forms.", e);
                }
            }
        }
        public ActionResult Submit(string formData, Guid ownerGuid)
        {
            using (IWriteContext context = this.FormSubmissionRepository.WriteContext())
            {
                SubmittedForm thisForm = new SubmittedForm
                {
                    FormData = formData,
                    Owner    = ownerGuid
                };

                this.FormSubmissionRepository.AddOrUpdate(thisForm);
            }

            this.EmailTemplateRepository.TrySendTemplate(new Dictionary <string, object>()
            {
                [nameof(formData)]  = formData.PrettifyJson(),
                [nameof(ownerGuid)] = ownerGuid
            });

            return(this.Content("Submitted"));
        }
        /// <summary>
        /// Get a specific form and its submitted data
        /// </summary>
        /// <param name="formId"></param>
        /// <returns></returns>
        public DBForm GetForm(string formId)
        {
            Form form = FormRepository.GetForm(formId);

            if (form == null)
            {
                Log.Warn("No form found in the Broker DB with ID: " + formId);
                return(null);
            }
            DBForm dbForm = new DBForm(form);

            using (SqlConnection sqlConnection = new SqlConnection(connectionString))
            {
                try
                {
                    sqlConnection.Open();
                    var getSubmittedFormsSQL = new SqlCommand(SELECT_SUBMITTED_FORMS, sqlConnection);
                    getSubmittedFormsSQL.Parameters.Add("@FormId", SqlDbType.NVarChar).Value = form.FormId;
                    SqlDataReader         reader         = getSubmittedFormsSQL.ExecuteReader();
                    IList <SubmittedForm> submittedForms = new List <SubmittedForm>();
                    dbForm.SubmittedForms = submittedForms;
                    while (reader.Read())
                    {
                        int           id            = reader.GetInt32(0);
                        DateTime      date          = reader.GetDateTime(1);
                        SubmittedForm submittedForm = new SubmittedForm {
                            SequenceId = id, SubmitDate = date
                        };
                        submittedForms.Add(submittedForm);
                    }
                    dbForm.Count = submittedForms.Count;
                    return(dbForm);
                }
                catch (Exception e)
                {
                    throw new DxaException("Could not get all forms.", e);
                }
            }
        }