示例#1
0
        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");
                }
            }
        }