/// <summary> /// Adapter function to get data from DB and load it into a From object. /// </summary> /// <param name="ID">ID of the form to get.</param> /// <param name="Recursive">Defaults to true. If set to false, only gets the data for the form and nothing further (IE the sections).</param> public Template GetTemplate(int ID, bool Recursive = true) { ClearData(); DataSet templateDS = new DataSet(); InternalTemplate = new Template(); comm.CommandText = "SELECT * FROM " + Config.TableNames["Templates"] + " WHERE ID=@ID;"; comm.Parameters.AddWithValue("@ID", ID); try { da.Fill(templateDS); var formMeta = templateDS.GetResults(); if (formMeta != null) { InternalTemplate.ID = ID; InternalTemplate.Name = (string)formMeta[0]["Name"]; InternalTemplate.Description = (string)formMeta[0]["Description"]; InternalTemplate.Sections = new List<Section>(); if (Recursive) { GetSections(Recursive); } } else { throw new Exception("No results found"); } } catch (Exception ex) { throw new Exception("Error in getFormStructure(): " + ex.Message); } //Close dat connection. No longer needed, bro! conn.Close(); return InternalTemplate; }
public TemplateCollection GetTemplates(int Number = 10) { DataSet templatesDS = new DataSet(); InternalTemplate = new Template(); TemplateCollection Forms = new TemplateCollection(); comm.CommandText = "SELECT TOP(@num) ID FROM " + Config.TableNames["Templates"]; comm.Parameters.AddWithValue("@num", Number); try { da.Fill(templatesDS); } catch (Exception ex) { throw new Exception("Error trying to open database connection in GetTopForms: " + ex.Message, ex); } var ids = templatesDS.GetResults(); if (ids != null) { foreach (DataRow id in ids) { Template formRef = GetTemplate((int)id["ID"]); Forms.Add(formRef); } } else { //throw new Exception("No results found"); return null; } return Forms; }
/// <summary> /// /// </summary> /// <param name="comm">The SqlCommand currently being used</param> private List<Field> GetFields(Section section) { DataSet fieldDS = new DataSet(); List<Field> Fields = new List<Field>(); comm.Parameters.Clear(); comm.CommandText = "SELECT * FROM " + Config.TableNames["Fields"] + " WHERE SectionID=@SectionID ORDER BY SortOrder"; comm.Parameters.AddWithValue("@SectionID", section.ID); try { da.Fill(fieldDS); var fieldsData = fieldDS.GetResults(); if (fieldsData != null) { foreach (DataRow field in fieldsData) { try { Field newField = new Field(); newField.SectionID = section.ID; newField.ID = (int)field["ID"]; newField.Label = (string)field["Label"]; newField.Required = (bool)field["Required"]; newField.SortOrder = (int)field["SortOrder"]; newField.Type = (string)field["Type"]; newField.Options = GetOptions(newField); if (newField.Type == "select" || newField.Type == "radio" || newField.Type == "checkbox") { foreach (Option opt in newField.Options) { newField.Values.Add(new Value() { OptionID = opt.ID, FieldID = newField.ID }); } } else { newField.Values.Add(new Value() { FieldID = newField.ID }); } //If the mode requires field values, then get the values Fields.Add(newField); } catch (FormValidationException ex) { //InternalForm._IsValid = false; //InternalForm._InvalidFields.Add(ex.InvalidField); } catch (Exception ex) { throw ex; } } } } catch (FormValidationException ex) { //InternalForm._IsValid = false; //InternalForm._InvalidFields.Add(ex.InvalidField); } catch (Exception ex) { throw new Exception("Error in getFieldsStructure(): " + ex.Message); } return Fields; }
/// <summary> /// /// </summary> /// <param name="field"></param> /// <returns></returns> private List<Option> GetOptions(Field field) { DataSet optionDS = new DataSet(); comm.Parameters.Clear(); List<Option> Options = new List<Option>(); comm.CommandText = "SELECT * FROM " + Config.TableNames["Options"] + " WHERE FieldID=@FieldID"; comm.Parameters.AddWithValue("@FieldID", field.ID); try { da.Fill(optionDS); var optionData = optionDS.GetResults(); if (optionData != null) { foreach (DataRow option in optionData) { Option NewOption = new Option(option); NewOption.FieldID = field.ID; NewOption.ID = (int?)option["ID"]; NewOption.SortOrder = (int)option["SortOrder"]; NewOption.Value = (string)option["Value"]; Options.Add(NewOption); } } } catch (FormValidationException vEx) { //InternalForm._IsValid = false; //InternalForm._InvalidFields.Add(vEx.InvalidField); } catch (Exception ex) { throw new Exception("Error in getOptionsStructure(): " + ex.Message); } return Options; }
private void LoadValues() { ClearData(); DataSet ValueDS = new DataSet(); comm.CommandText = "SELECT * FROM " + Config.TableNames["Values"] + " WHERE FormID=@FormID"; comm.Parameters.AddWithValue("@FormID", InternalForm.ID); da.Fill(ValueDS); var valuesData = ValueDS.GetResults(); if (valuesData != null) { foreach (DataRow value in valuesData) { var FieldID = value["FieldID"]; Value v = new Value { ID = (int)value["ID"], FormID = (int)value["FormID"], OptionID = (int)value["OptionID"], FieldID = (int)value["FieldID"], Content = (string)value["Content"] }; //Find the section that contains the field id currently being processed, then get the field that the ID matches Field RelatedField = InternalForm.Sections.Where(sec => sec.Fields.Where(field => field.ID == v.FieldID).Count() >= 1).First().Fields.First(field => field.ID == v.FieldID); //Find the specific Value that's been set up already and load the DB information into it. Value RelatedValue = RelatedField.Values.First(val => val.FieldID == v.FieldID); RelatedValue.FormID = v.FormID; RelatedValue.FieldID = v.FieldID; RelatedValue.OptionID = v.OptionID; RelatedValue.Content = v.Content; } } }