public static FormTypeModel GetFormFields(string formName) { FormTypeModel ModelDef = null; string dataString = null; string connString = ConfigurationManager.ConnectionStrings["DFMDBConnectionString"].ConnectionString; //read from config try { using (SqlConnection conn = new SqlConnection(connString)) { String spGetFormFields = @"[dbo].[Proc_FormType_GetFormFields]"; SqlCommand cmd = new SqlCommand(spGetFormFields, conn); conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter param = cmd.Parameters.Add("@FormName", SqlDbType.VarChar); param.Value = formName; SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows && dr.Read()) { dataString = Convert.ToString(dr["FormConfig"]); ModelDef = JsonConvert.DeserializeObject <FormTypeModel>(dataString); } dr.Close(); conn.Close(); } } catch (Exception ex) { Console.WriteLine("Exception:" + ex.Message); } return(ModelDef); }
/// <summary> /// Get properties /// </summary> /// <param name="formFieldType"></param> /// <returns></returns> private IEnumerable<PropertyInfo> GetProperties(FormTypeModel formFieldType) { var propertyInfoArray = formFieldType.FormType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty); foreach (var propertyInfo in this.FilterPropertiesWithPublicGetAndSetAccessor(propertyInfoArray)) { if (propertyInfo.IsDefined(typeof(IgnoreAttribute), true)) { continue; } yield return propertyInfo; } }
/// <summary> /// Serialize FormTypeModel /// </summary> /// <param name="formTypeModel"></param> /// <returns></returns> public XDocument Serialize(FormTypeModel formTypeModel) { var xDoc = new XDocument(); var namespaceXForms = XNamespace.Get("http://www.w3.org/2002/xforms"); var namespaceXml = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); var rootElement = new XElement("root", new XAttribute(XNamespace.Xmlns + "xforms", namespaceXForms), new XAttribute(XNamespace.Xmlns + "xsi", namespaceXml)); var modelElement = new XElement("model"); var instanceElement = new XElement("instance"); rootElement.Add(modelElement); modelElement.Add(instanceElement); var tableElement = new XElement("table", new XAttribute("id", "id_matrix")); var tbodyElement = new XElement("tbody"); rootElement.Add(tableElement); tableElement.Add(tbodyElement); foreach (FormRowModel row in formTypeModel.Fields) { var trElement = new XElement("tr"); foreach (FormColumnModel column in row.Columns) { var tdElement = new XElement("td", new XAttribute("valign", "top")); foreach (FormFieldModel item in column.FormFields) { if (item is FormFieldTypeModel) { var xElement = new XElement(((FormFieldTypeModel) item).Name); if (item is TextBoxFormFieldTypeModel) { var validateAs = _formFieldSerializeUtils.GetFieldValidateAsValue(((TextBoxFormFieldTypeModel)item).ValidateAs); if (!string.IsNullOrEmpty(validateAs)) { xElement.Add(new XAttribute(namespaceXml + "type", validateAs)); } } instanceElement.Add(xElement); } tdElement.Add(item.Serialize(namespaceXForms)); } trElement.Add(tdElement); } tbodyElement.Add(trElement); } xDoc.Add(rootElement); return xDoc; }
/// <summary> /// Create XForm from FormTypeModel /// </summary> /// <param name="formTypeModel"></param> /// <returns></returns> public XForm Create(FormTypeModel formTypeModel) { var form = new XForm(); form.Id = formTypeModel.Guid; form.FormName = formTypeModel.Name; form.CreatedBy = formTypeModel.CreatedBy; form.Created = DateTime.Now; form.ChangedBy = formTypeModel.CreatedBy; form.Changed = DateTime.Now; form.AllowAnonymousPost = formTypeModel.FormCanBeSentWithoutLoggingIn; form.AllowMultiplePost = formTypeModel.SamePersonCanSendTheFormSeveralTimes; form.Document = new SerializableXmlDocument(); form.Document.LoadXml(_formSerializer.Serialize(formTypeModel).ToString()); return form; }
/// <summary> /// Analyze for form field properties /// </summary> /// <param name="formFieldType"></param> /// <returns></returns> public IList<FormRowModel> Analyze(FormTypeModel formFieldType) { var rows = new List<FormRowModel>(); var properties = GetProperties(formFieldType); foreach (var property in properties) { var attributes = property.GetCustomAttributes(true); var formFieldAttribute = attributes.OfType<FormFieldAttribute>().FirstOrDefault(); if (formFieldAttribute != null) { var row = new FormRowModel(); var column = new FormColumnModel(); column.FormFields.Add(formFieldAttribute.FromAttribute()); row.Columns.Add(column); rows.Add(row); } } return rows; }
public HttpResponseMessage GetUserFormDatasApi(string formName) { string accessToken = Request.Headers.Authorization.Parameter; FormTypeModel formFields = FormTypeHelper.GetFormFields(formName); if (formFields.FormType.ToLower() == "height") { string wctoken = ((string[])(Request.Headers.GetValues("CHbaseToken")))[0]; Guid app_id = new Guid("d13d9244-8f0c-44e7-8498-682dc9befc23"); PersonInfo personInfo = WebApplicationUtilities.GetPersonInfo(wctoken, app_id); List <HeightModel> heightMeasurements = HeightHelper.GetValues <HeightModel>(Height.TypeId, personInfo); List <FormDataModel> formDatas = new List <FormDataModel>(); int i = 1000; foreach (HeightModel heightMeasurement in heightMeasurements) { FormDataModel formdata = new FormDataModel(); List <DataValueModel> datas = new List <DataValueModel>(); DataValueModel data1 = new DataValueModel(); DataValueModel data2 = new DataValueModel(); data1.Name = "Meters"; data1.Value = heightMeasurement.Meters.ToString(); datas.Add(data1); data2.Name = "When"; data2.Value = heightMeasurement.When.ToString(); datas.Add(data2); formdata.FormId = i; formdata.FormName = formFields.FormName; formdata.FormType = formFields.FormType; formdata.FormData = datas; formDatas.Add(formdata); i += 1; } var message = Request.CreateResponse(HttpStatusCode.OK, formDatas); return(message); } else { UserObjectModel userObj = TokenHelper.getUserByAccessToken(accessToken); if (userObj != null) { List <FormDataModel> dataList = UserSpecificFormsHelper.GetUserFormDataList(userObj.UserId, formName); var message = Request.CreateResponse(HttpStatusCode.OK, dataList); return(message); } else { throw new Exception("Invalid User"); } } }