Exemplo n.º 1
0
    public static Survey createSurvey(ImportingElement element, int id, string flag)
    {
        GRASPEntities db = new GRASPEntities();

        Survey survey = new Survey();

        survey.name = element.refListName;
        survey.owner_id = id;

        db.Survey.Add(survey);
        db.SaveChanges();

        if (flag == "select1")
        {
            foreach (string label in element.select1Labels)
            {
                int size = FormFieldExport.getSurveyList(survey.id);
                SurveyElement se = createSurveyElement(label, size);
                createSurveyAssociation(survey.id, se.id);
            }
        }
        if (flag == "survey")
        {
            foreach (string label in element.surveyValues)
            {
                int size = FormFieldExport.getSurveyList(survey.id);
                SurveyElement se = createSurveyElement(label, size);
                createSurveyAssociation(survey.id, se.id);
            }
        }

        return survey;
    }
Exemplo n.º 2
0
    protected void grdIndexFields_InsertCommand(object sender, GridCommandEventArgs e)
    {
        var editableItem = ((GridEditableItem)e.Item);
        //populate its properties
        Hashtable values = new Hashtable();
        editableItem.ExtractValues(values);

        RadComboBox combo = editableItem.FindControl("ddlFormFields") as RadComboBox;
        string ffID = combo.SelectedValue;

        GRASPEntities db = new GRASPEntities();

        //create new entity
        IndexField idx = new IndexField();
        idx.FormFieldID = Convert.ToDecimal(ffID);
        idx.IndexID = Convert.ToInt32(grdIndex.SelectedValue.ToString());

        db.IndexFields.Add(idx);
        try
        {
            //submit chanages to Db
            db.SaveChanges();
        }
        catch(System.Exception ex)
        {
            SetMessage(ex.Message);
        }
    }
    public static bool InsertOrUpdateStatus(string fileName, bool isSaved)
    {
        bool isSuccess = false;

        try
        {
            using (GRASPEntities db = new GRASPEntities())
            {
                var formResponseServerStatus = (from fr in db.FormResponseServerStatus
                                                                     where fr.InstanceUniqueIdentifier == fileName
                                                                     select fr).FirstOrDefault();
                if (formResponseServerStatus != null)
                {
                    formResponseServerStatus.IsSavedToServer = isSaved;
                }
                else
                {
                    formResponseServerStatus = new FormResponseServerStatus();
                    formResponseServerStatus.InstanceUniqueIdentifier = fileName;
                    formResponseServerStatus.IsSavedToServer = isSaved;
                    db.FormResponseServerStatus.Add(formResponseServerStatus);
                }

                db.SaveChanges();
                isSuccess = true;
            }
        }
        catch (Exception)
        {
        }

        return isSuccess;
    }
Exemplo n.º 4
0
    /// <summary>
    /// Create a single response for a formfield
    /// </summary>
    /// <param name="value">A string representing the response value</param>
    /// <param name="formResponseID">The id of the formresponse</param>
    /// <param name="formFieldID">The id of the formfield</param>
    /// <param name="rCount">An int representing the repeatcount (-1 for roster/table, > 0 for roster children, 0 otherwise</param>
    public static void createResponseValue(string value, int formResponseID, int formFieldID, int rCount)
    {
        GRASPEntities db = new GRASPEntities();

        var response = new ResponseValue();
        response.value = value;
        response.FormResponseID = formResponseID;
        response.formFieldId = formFieldID;
        response.RVCreateDate = DateTime.Now;
        response.RVRepeatCount = rCount;

        db.ResponseValue.Add(response);
        db.SaveChanges();
    }
Exemplo n.º 5
0
    public static SurveyElement createSurveyElement(string value, int positionIndex)
    {
        GRASPEntities db = new GRASPEntities();

        SurveyElement surveyel = new SurveyElement();

        surveyel.value = value;
        surveyel.positionIndex = positionIndex;
        surveyel.defaultValue = 0;

        db.SurveyElement.Add(surveyel);
        db.SaveChanges();

        return surveyel;
    }
Exemplo n.º 6
0
    public static void createConstraints(FormField ff, ImportConstraintContainer icc)
    {
        GRASPEntities db = new GRASPEntities();

        ConstraintContainer cc = new ConstraintContainer();

        cc.pushed = 0;
        cc.cType = icc.cNumber.ToString();
        cc.maxRange = icc.maxRange;
        cc.minRange = icc.minRange;
        cc.value = icc.value;
        db.ConstraintContainer.Add(cc);
        db.SaveChanges();

        createconstraintAssociation(ff.id, cc.id);
    }
Exemplo n.º 7
0
 public static UserFilters Insert(int formID, int userID, string filter, string filterDescription)
 {
     using(GRASPEntities db = new GRASPEntities())
     {
         UserFilters newUF = new UserFilters();
         newUF.UserFilterCreateDate = DateTime.Now;
         newUF.UserFilterIsEnabled = 1;
         newUF.UserFilterString = filter;
         newUF.UserFilterDescription = filterDescription;
         newUF.formID = formID;
         newUF.userID = userID;
         db.UserFilters.Add(newUF);
         db.SaveChanges();
         return newUF;
     }
 }
Exemplo n.º 8
0
    public static void createBinding(FormField ff, ImportingBindingContainer ibc)
    {
        GRASPEntities db = new GRASPEntities();

        BindingContainer bc = new BindingContainer();

        bc.pushed = 0;
        bc.bType = ibc.bType.ToString();
        bc.maxRange = ibc.maxRange;
        bc.minRange = ibc.minRange;
        bc.value = ibc.value;
        bc.FormFieldAndBinding.Add(createFormFieldAndBinding(ff, bc.id));

        db.BindingContainer.Add(bc);
        db.SaveChanges();
    }
Exemplo n.º 9
0
    public static Form createForm(string formID, string formName)
    {
        GRASPEntities db = new GRASPEntities();

        Form form = new Form();

        form.bindingsPolicy = "All";
        form.designerVersion = "WebImport";
        form.finalised = 0;
        form.id_flsmsId = formID;
        form.name = formName;
        form.owner = "*****@*****.**";
        form.FormCreateDate = DateTime.Now;

        db.Form.Add(form);
        db.SaveChanges();

        return form;
    }
Exemplo n.º 10
0
    private static void createconstraintAssociation(decimal p1, decimal p2)
    {
        GRASPEntities db = new GRASPEntities();

        FormField_ConstraintContainer cc = new FormField_ConstraintContainer();

        cc.FormField_id = p1;
        cc.constraints_id = p2;

        db.FormField_ConstraintContainer.Add(cc);
        db.SaveChanges();
    }
Exemplo n.º 11
0
    public static string SaveFormAsJSON(string result, int formID, int formResponseID)
    {
        //Stopwatch stopWatch = new Stopwatch();
        //stopWatch.Start();
        StringBuilder sb = new StringBuilder();
        Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

        try
        {
            Dictionary<string, Object> values = JsonConvert.DeserializeObject<Dictionary<string, Object>>(result);
            string[,] fieldTypeMapping = FormField.getFormFieldTypeMap(formID); //idx= 0:name;1:id;2:type;3:positionIndex
            int fIDX = -1;
            int formFieldID = 0;
            int positionIndex = 0;
            string coords = "";
            int gpsFormFieldID = 0;
            GRASPEntities db = new GRASPEntities();

            //create a new review

            string userName = HttpContext.Current.User.Identity.Name.ToString();
            FormResponseReviews frr = FormResponseReviews.Insert(formResponseID, userName, 0, 0, "Data Editing");
            //int frrID = frr.FormResponseReviewID;
            //ResponseValueReviews rvr = new ResponseValueReviews();
            ////when we do the field update we keep the image field
            ////we update by field name
            List<ResponseValue> respValue = (from rv in db.ResponseValue
                                             where rv.FormResponseID == formResponseID
                                             select rv).ToList();
            //s* useless code
            //string sqlInsert = "INSERT INTO ResponseValueReviews (formFieldID,FormresponseID,positionIndex,RVRepeatCount,value,nvalue,dvalue,FormResponseReviewID) " +
            //    " VALUES (";
            //foreach(ResponseValue rv in respValue)
            //{
            //    string updVal = sqlInsert;
            //    updVal += rv.formFieldId.ToString() + ",";
            //    updVal += rv.FormResponseID.ToString() + ",";
            //    updVal += rv.positionIndex.ToString() + ",";
            //    updVal += rv.RVRepeatCount.ToString() + ",";
            //    updVal += "N'" + rv.value.ToString() + "',";
            //    if(rv.nvalue != null)
            //    {
            //        updVal += rv.nvalue.ToString() + ",";
            //    }
            //    else
            //    {
            //        updVal += "NULL,";
            //    }
            //    if(rv.dvalue != null)
            //    {
            //        updVal += "'" + rv.dvalue.ToString() + "',";
            //    }
            //    else
            //    {
            //        updVal += "NULL,";
            //    }
            //    updVal += frrID.ToString() + ");";
            //    sb.AppendLine(updVal);

            //    //rvr.formFieldId = rv.formFieldId;
            //    //rvr.FormResponseID = rv.FormResponseID;
            //    //rvr.positionIndex = rv.positionIndex;
            //    //rvr.RVRepeatCount = rv.RVRepeatCount;
            //    //rvr.value = rv.value;
            //    //rvr.nvalue = rv.nvalue;
            //    //rvr.dvalue = rv.dvalue;
            //    //rvr.FormResponseReviewID = frrID;
            //}
            //db.Database.ExecuteSqlCommand(sb.ToString());

            foreach(var v in values)
            {
                if (v.Key.Equals("gps")) //Continue to the next value, as the gps values are saved in LatDE and LongDE, not in gps.
                {
                    continue;
                }

                fIDX = -1;
                //ffields.TryGetValue(v.Key, out ffID);
                for(int i = 0; i < fieldTypeMapping.GetLength(0); i++)
                {
                    if(v.Key == fieldTypeMapping[i, 0])
                    {
                        fIDX = i;
                        break;
                    }
                }

                if(fIDX == -1)
                {
                    int ind = v.Key.IndexOf("LatDE");
                    if(ind > 0)
                    {
                        coords = v.Value.ToString();
                    }
                    ind = v.Key.IndexOf("LongDE");
                    if(ind > 0)
                    {
                        coords = v.Value.ToString() + " " + coords;
                        string tmp = v.Key.Substring(0, ind);
                        int ffID = FormField.getIdFromName(tmp, formID);
                        coords = coords.Replace(",", ".");

                        ResponseValue.updateResponseValue(db, coords, formResponseID, ffID, positionIndex, 0);
                        FormResponseCoord.UpdateByFormResponseID(coords, formResponseID);
                        coords = "";
                    }
                }
                else
                {

                    formFieldID = Convert.ToInt32(fieldTypeMapping[fIDX, 1]);
                    positionIndex = Convert.ToInt32(fieldTypeMapping[fIDX, 3]);
                    switch(fieldTypeMapping[fIDX, 2])
                    {
                        case "REPEATABLES_BASIC":
                        case "REPEATABLES":
                            bool isEmpty = true;
                            int i = 0;
                            JArray rVal;
                            try
                            {
                                string a = null;
                                rVal = (JArray)values[v.Key];

                                foreach(var r in rVal)
                                {
                                    isEmpty = false;
                                    UpdateRepeatable(db, respValue, r.ToString(), fieldTypeMapping, v.Key, formResponseID, ++i);
                                }
                            }
                            catch(Exception ex)
                            {
                                isSaved = "false";
                            }
                            if(!isEmpty)
                            {
                                if (IsResponseValueExisted(respValue, formFieldID)) //if(respValue.Where(w => w.formFieldId == formFieldID && w.RVRepeatCount == -1).Count() != 0)
                                {
                                    ResponseValue.updateResponseValue(db, i.ToString(), formResponseID, formFieldID, positionIndex, -1);
                                }
                                else
                                {
                                    ResponseValue.createResponseValue(db, i.ToString(), formResponseID, formFieldID, positionIndex, -1);
                                }
                            }

                            break;
                        case "IMAGE":
                            if(v.Value.ToString().Length > 0)
                            {
                                string folderPath = Utility.GetImagesFolderPath() + Utility.GetImagesFolderName() + "\\WEB\\" + formResponseID;
                                string value = v.Value.ToString().Substring(v.Value.ToString().IndexOf("base64") + 7);
                                var bytes = Convert.FromBase64String(value);

                                bool isExists = System.IO.Directory.Exists(folderPath);
                                if(!isExists)
                                    System.IO.Directory.CreateDirectory(folderPath);

                                using(var imageFile = new FileStream(folderPath + "\\" + v.Key + ".jpg", FileMode.Create))
                                {
                                    imageFile.Write(bytes, 0, bytes.Length);
                                    imageFile.Flush();
                                }

                                string imagePthValue = Utility.GetGRASPImagesVirtualDirectory() + Utility.GetImagesFolderName() + "\\WEB\\" + formResponseID + "\\" + v.Key.ToString() + ".jpg";
                                if(IsResponseValueExisted(respValue, formFieldID))
                                {
                                    ResponseValue.updateResponseValue(db, imagePthValue, formResponseID, formFieldID, positionIndex, 0);
                                }
                                else
                                {
                                    ResponseValue.createResponseValue(db, imagePthValue, formResponseID, formFieldID, positionIndex, 0);
                                }
                            }
                            break;
                        case "DROP_DOWN_LIST":
                            Dictionary<string, Object> ResVal = JsonConvert.DeserializeObject<Dictionary<string, Object>>(v.Value.ToString());

                            if (IsResponseValueExisted(respValue, formFieldID))
                            {
                                ResponseValue.updateResponseValue(db, ResVal.FirstOrDefault().Value.ToString(), formResponseID, formFieldID, positionIndex, 0);
                            }
                            else
                            {
                                ResponseValue.createResponseValue(db, ResVal.FirstOrDefault().Value.ToString(), formResponseID, formFieldID, positionIndex, 0);
                            }

                            break;
                        case "NUMERIC_TEXT_FIELD":
                            if (IsResponseValueExisted(respValue, formFieldID))
                            {
                                if(v.Value == null)
                                {
                                    ResponseValue.updateResponseValue(db, "0", formResponseID, formFieldID, positionIndex, 0, "NUMERIC_TEXT_FIELD");
                                }
                                else
                                {
                                    ResponseValue.updateResponseValue(db, v.Value.ToString(), formResponseID, formFieldID, positionIndex, 0, "NUMERIC_TEXT_FIELD");
                                }
                            }
                            else
                            {
                                ResponseValue.createResponseValue(db, v.Value.ToString(), formResponseID, formFieldID, positionIndex, 0, "NUMERIC_TEXT_FIELD");
                            }

                            break;
                        default:
                            try
                            {
                                if (IsResponseValueExisted(respValue, formFieldID))
                                {
                                    ResponseValue.updateResponseValue(db, v.Value.ToString(), formResponseID, formFieldID, positionIndex, 0);
                                }
                                else
                                {
                                    ResponseValue.createResponseValue(db, v.Value.ToString(), formResponseID, formFieldID, positionIndex, 0);
                                }
                            }
                            catch(Exception ex)
                            {
                                //Dictionary<string, Object> ResValDef = JsonConvert.DeserializeObject<Dictionary<string, Object>>(v.Value.ToString());
                                //ResponseValue.createResponseValue(db, ResValDef.FirstOrDefault().Value.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);

                                string fpath = HttpContext.Current.Server.MapPath("~/LogFiles/");
                                if(!Directory.Exists(fpath))
                                {
                                    Directory.CreateDirectory(fpath);
                                }
                                string val = "";
                                if(v.Value != null)
                                {
                                    val = " FieldValue : " + v.Value.ToString();
                                }
                                if(v.Key != null)
                                {
                                    val += " [key:" + v.Key.ToString() + "]\r\n";
                                }
                                WriteTextFile("\r\nERROR-1913  Date: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n" + ex.Message + "\r\n" + ex.StackTrace + "\r\n" + result + "\r\n" + val + "\r\n---------------\r\n", fpath + "\\DataEntryWebFormJSON.txt");

                            }
                            break;
                    }
                }
            }

            FormResponse.UpdateById(db, (decimal)formResponseID);
            db.SaveChanges();

            //stopWatch.Stop();
            //// Get the elapsed time as a TimeSpan value.
            //TimeSpan ts = stopWatch.Elapsed;
            //// Format and display the TimeSpan value.
            //string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:000}",
            //    ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds);
            //Debug.WriteLine("RunTime: " + elapsedTime);

            Index.GenerateIndexesHASH(formID, formResponseID);
            ServerSideCalculatedField.GenerateSingle(formID, formResponseID);
            UserToFormResponses.GenerateAssociationForAllUsers(formID, formResponseID);

            return formID.ToString();
        }
        catch(Exception ex)
        {
            string folderPath = HttpContext.Current.Server.MapPath("~/LogFiles/");
            if(!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }
            string loggedUser = HttpContext.Current.User.Identity.Name.ToString();

            WriteTextFile("Date: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\nUser: "******"\r\nFormResponseID:" + formResponseID.ToString() + "\r\n" + ex.Message + "\r\n" + ex.StackTrace + "\r\n", folderPath + "\\DataEditWebForm.txt");
            return "ERROR: " + ex.Message.ToString();
        }
    }
Exemplo n.º 12
0
    private static void createSurveyAssociation(decimal p1, decimal p2)
    {
        GRASPEntities db = new GRASPEntities();

        Survey_SurveyElement surveyel = new Survey_SurveyElement();

        surveyel.Survey_id = p1;
        surveyel.values_id = p2;

        db.Survey_SurveyElement.Add(surveyel);
        db.SaveChanges();
    }
Exemplo n.º 13
0
    protected void grdIndex_InsertCommand(object source, GridCommandEventArgs e)
    {
        var editableItem = ((GridEditableItem)e.Item);
        //create new entity
        Index idx = new Index();
        //populate its properties
        Hashtable values = new Hashtable();
        editableItem.ExtractValues(values);
        idx.IndexName = (string)values["IndexName"];
        idx.IndexCreateDate = DateTime.Now;
        idx.formID = Convert.ToInt32(ddlForms.SelectedValue);

        GRASPEntities db = new GRASPEntities();
        db.Indexes.Add(idx);
        try
        {
            //submit chanages to Db
            db.SaveChanges();
        }
        catch(System.Exception ex)
        {
            SetMessage(ex.Message);
        }
    }
Exemplo n.º 14
0
    protected void grdIndex_DeleteCommand(object source, GridCommandEventArgs e)
    {
        var indexID = (int)((GridDataItem)e.Item).GetDataKeyValue("IndexID");

        //retrive entity form the Db
        GRASPEntities db = new GRASPEntities();
        Index idx = (from i in db.Indexes
                     where i.IndexID == indexID
                     select i).FirstOrDefault();

        if(idx != null)
        {
            //add the category for deletion
            db.Indexes.Remove(idx);
            try
            {
                //submit chanages to Db
                db.SaveChanges();
            }
            catch(System.Exception ex)
            {
                SetMessage(ex.Message);
            }
        }
    }
Exemplo n.º 15
0
    public static FormField createFormField(ImportingElement element, int id)
    {
        GRASPEntities db = new GRASPEntities();

        var formField = new FormField();

        if(element.fieldType != FormFieldType.SEPARATOR)
        {
            if(!element.isRepItem)
            {
                element = cutIndexFromName(element);
            }
            formField.type = element.fieldType.ToString();
            formField.label = element.label;
            formField.name = element.name;
            formField.required = element.bindReference.required ? (byte)1 : (byte)0;
            formField.bindingsPolicy = element.bindingsPolicy;
            formField.constraintPolicy = element.constraintPolicy;
            formField.isReadOnly = element.bindReference.readOnly ? (byte)1 : (byte)0;

            if(element.calculated != null)
            {
                formField.calculated = 1;
                formField.formula = element.calculated;
            }
            else formField.calculated = 0;
        }
        else
        {
            formField.type = element.fieldType.ToString();
            formField.label = element.label;
            formField.name = element.name;
            formField.required = 0;
        }
        if((element.fieldType == FormFieldType.DROP_DOWN_LIST) || (element.fieldType == FormFieldType.RADIO_BUTTON))
        {
            Survey s = Survey.createSurvey(element, id, "select1");
            formField.survey_id = s.id;
        }
        if(element.fieldType == FormFieldType.REPEATABLES_BASIC)
        {
            formField.type = element.fieldType.ToString();
            formField.label = element.label;
            formField.name = element.name;
            formField.required = 0;
            foreach(ImportingElement reps in element.repElements)
            {
                createFormField(reps, id);
            }
            formField.numberOfRep = element.numberOfReps;
        }
        if(element.fieldType == FormFieldType.REPEATABLES)
        {
            formField.type = element.fieldType.ToString();
            formField.label = element.label;
            formField.name = element.name;
            formField.required = 0;
            foreach(ImportingElement reps in element.repElements)
            {
                createFormField(reps, id);
            }
            Survey s = Survey.createSurvey(element, id, "survey");
            formField.survey_id = s.id;
        }

        formField.pushed = 0;
        formField.form_id = id;
        formField.FFCreateDate = DateTime.Now;
        db.FormField.Add(formField);
        db.SaveChanges();

        return formField;
    }
Exemplo n.º 16
0
    private static FormFieldAndBinding createFormFieldAndBinding(FormField ff, decimal p)
    {
        GRASPEntities db = new GRASPEntities();

        FormFieldAndBinding ffb = new FormFieldAndBinding();

        ffb.pushed = 0;
        ffb.bContainer_id = p;
        if(ff != null)
            ffb.fField_id = ff.id;

        db.FormFieldAndBinding.Add(ffb);
        db.SaveChanges();

        return ffb;
    }
Exemplo n.º 17
0
    /// <summary>
    /// Adds the new role permissions and removes the deleted role permissions.
    /// </summary>
    /// <param name="newRolePermissionses"></param>
    /// <param name="deletedRolePermissionses"></param>
    /// <returns></returns>
    public static bool UpdateRolePermissions(List<Role_Permissions> newRolePermissionses, List<Role_Permissions> deletedRolePermissionses)
    {
        bool isSuccess = false;

        try
        {
            using (GRASPEntities db = new GRASPEntities())
            {
                if (deletedRolePermissionses != null)
                {
                    foreach (Role_Permissions rolePermissions in deletedRolePermissionses)
                    {
                        Role_Permissions rolePermissionsToRemove = db.RolePermissions.Single(o => o.id == rolePermissions.id);
                        db.RolePermissions.Remove(rolePermissionsToRemove);
                    }
                }

                if (newRolePermissionses != null)
                {
                    db.RolePermissions.AddRange(newRolePermissionses);
                }

                db.SaveChanges();
            }

            isSuccess = true;
        }
        catch (Exception ex)
        {
            LogUtils.WriteErrorLog(ex.ToString());
        }

        return isSuccess;
    }
Exemplo n.º 18
0
    public string ProcessResponse(string text, string sender, string fileName)
    {
        string[,] fieldTypeMapping = null;
        int fIDX = -1;
        int formParentID = 0;
        int formResponseID = 0;
        string fieldName = "";
        string clientVersion = "";
        int prevFFID = 0;
        int ffIdRoster = 0;
        int repCount = 0; //Uses to count the records of a Repeatable control (Roster or Table). Uses: 1- In export to write each record in a new row.
        bool previousRoster = false;
        string fileContent="";
        string previousFieldName = "";
        bool isEditedResponse = false;

        try
        {
            formResponseID = FormResponse.GetIdByResponseFileName(fileName);
            if (formResponseID != 0) //It is edited response
            {
                isEditedResponse = true;
            }

            if(text.Length != 0)
            {
                byte[] encodedText = Convert.FromBase64String(text);
                Stream stream = new MemoryStream(encodedText);
                GZipStream zipStream = new GZipStream(stream, CompressionMode.Decompress);

                stream.Position = 0;
                StreamReader sr = new StreamReader(zipStream);
                string tmp = sr.ReadToEnd();
                int index = tmp.IndexOf("</data>?");
                fileContent = tmp.Substring(0, index + 7);
            }
            else
            {
                LogUtils.WriteFileErrorLog(null, fileName, text);
                return "ko";
            }
        }
        catch(Exception ex)
        {
            LogUtils.WriteFileErrorLog(ex, fileName, text);
            return "ko";
        }
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(fileContent);
        var nodes = xmlDoc.SelectNodes("data");

        try
        {
            using(GRASPEntities db = new GRASPEntities())
            {
                foreach(XmlNode childrenNode in nodes)
                {
                    foreach(XmlNode child in childrenNode.ChildNodes)
                    {
                        if(child.Name == "id")
                        {
                            formParentID = FormResponse.getFormID(child.InnerText);

                            if (!isEditedResponse) //It is a new Response (not edited).
                            {
                                formResponseID = FormResponse.createFormResponse(formParentID, sender, "", fileName);
                            }
                            else
                                FormResponse.UpdateById(db, (decimal)formResponseID);

                            fieldTypeMapping = FormField.getFormFieldTypeMap(formParentID); //idx= 0:name; 1:id; 2:type; 3:positionIndex

                            if(formResponseID == 0) //The form ID is not existed in the database.
                            {
                                SaveFileInResponseFilesFolder(fileContent, fileName, GeneralEnums.ResponseFilesFolderNames.unknownForms);
                                DeleteFormFromResponseFileFolder(fileName, GeneralEnums.ResponseFilesFolderNames.incoming);
                                return "ko";
                            }
                            if(firstFormResponseID == 0)
                            {
                                firstFormResponseID = formResponseID;
                            }
                        }
                        else if(child.Name.Contains('_'))
                        {
                            string[] tmpSplit = child.Name.Split('_');
                            fieldName = tmpSplit[0];
                            if(tmpSplit.Length > 2)
                            {
                                for(int k = 1; k < tmpSplit.Length - 1; k++)
                                    fieldName += "_" + tmpSplit[k];
                            }
                            fIDX = -1;

                            for(int i = 0; i < fieldTypeMapping.GetLength(0); i++)
                            {
                                if(fieldName == fieldTypeMapping[i, 0])
                                {
                                    fIDX = i;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            fIDX = -1;
                            for(int i = 0; i < fieldTypeMapping.GetLength(0); i++)
                            {
                                if(fieldName == fieldTypeMapping[i, 0])
                                {
                                    fIDX = i;
                                    break;
                                }
                            }
                        }

                        if(fIDX != -1)
                        {
                            switch(fieldTypeMapping[fIDX, 2])
                            {
                                case "REPEATABLES_BASIC": //Roster
                                    if (prevFFID == fIDX)
                                        repCount++;
                                    else
                                        repCount = 1;

                                    if (!previousFieldName.Equals(fieldName)) //Add a record for the roster or table root field.
                                    {
                                        if (!isEditedResponse)
                                            ResponseValue.createResponseValue(db, repCount.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), -1);
                                    }

                                    //Adds the questions inside the Roster.
                                    InsertOrUpdateRepeatableData(db, child, fieldTypeMapping, formResponseID, repCount, isEditedResponse);
                                    prevFFID = fIDX;
                                    previousRoster = true;
                                    break;
                                case "REPEATABLES": //Table
                                    repCount = 0;

                                    if (!previousFieldName.Equals(fieldName)) //Add a record for the roster or table root field.
                                    {
                                        //s* change the value of repCount
                                        if (!isEditedResponse)
                                            ResponseValue.createResponseValue(db, repCount.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), -1);
                                    }

                                    foreach(XmlNode rChild in child.ChildNodes)
                                    {
                                        //s* change the value of repCount
                                        //Adds the questions inside the Table.
                                        InsertOrUpdateRepeatableData(db, rChild, fieldTypeMapping, formResponseID, ++repCount, isEditedResponse);
                                    }

                                    prevFFID = fIDX;
                                    previousRoster = true;
                                    break;
                                case "IMAGE":
                                    if (isEditedResponse)
                                        break;

                                    //Added by Rushdi on 30-SEP-2014
                                    if(child.InnerText.Contains("/instances"))
                                    {
                                        child.InnerText = sender.Replace('+', ' ').Trim() + "\\" + child.InnerText.Split('/').Last();
                                    }
                                    //------------------------------
                                    string imageFilePath = string.Empty;
                                    if (child.InnerText.Contains("\\"))
                                    {
                                        string imageFileName = Path.GetFileNameWithoutExtension(child.InnerText.Split('\\')[1]);
                                        //fileName PartialDmgGaza_2014-09-18_10-59-04_101
                                        imageFilePath = Utility.GetGRASPImagesVirtualDirectory() + GetImageFileFullPath(fileName, imageFileName);
                                    }
                                    else
                                        imageFilePath = Utility.GetGRASPImagesVirtualDirectory() + Utility.GetImagesFolderName() + "\\" + child.InnerText;

                                    ResponseValue.createResponseValue(db, imageFilePath, formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                                    break;
                                case "GEOLOCATION":
                                    if(!string.IsNullOrEmpty(child.InnerText))
                                    {
                                        if (isEditedResponse)
                                        {
                                            ResponseValue.updateResponseValue(db, child.InnerText, formResponseID,
                                                Convert.ToInt32(fieldTypeMapping[fIDX, 1]),
                                                Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                                            FormResponseCoord.UpdateByFormResponseID(child.InnerText, formResponseID);
                                        }
                                        else
                                        {
                                            ResponseValue.createResponseValue(db, child.InnerText, formResponseID,
                                                Convert.ToInt32(fieldTypeMapping[fIDX, 1]),
                                                Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                                            FormResponseCoord.createFormResponseCoord(child.InnerText, formResponseID);
                                        }
                                    }
                                    break;
                                case "NUMERIC_TEXT_FIELD":
                                    child.InnerText = Utility.GetIntegerNumberFromString(child.InnerText);
                                    if (isEditedResponse)
                                    {
                                        ResponseValue.updateResponseValue(db, child.InnerText, formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0, "NUMERIC_TEXT_FIELD");
                                    }else
                                        ResponseValue.createResponseValue(db, child.InnerText, formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0, "NUMERIC_TEXT_FIELD");
                                    break;
                                default:
                                    string valueToInsert = "";
                                    if(child.InnerText != null && child.InnerText.Length > 4000)
                                    {
                                        valueToInsert = child.InnerText.Substring(0, 3999);
                                    }
                                    else
                                    {
                                        valueToInsert = child.InnerText;
                                    }

                                    if (fieldTypeMapping[fIDX, 2].Equals(GeneralEnums.FieldTypes.CHECK_BOX.ToString()) //Save false for unchecked check boxes.
                                        && string.IsNullOrEmpty(valueToInsert))
                                    {
                                        valueToInsert = "false";
                                    }

                                    if (isEditedResponse)
                                    {
                                        ResponseValue.updateResponseValue(db, valueToInsert, formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                                    }else
                                        ResponseValue.createResponseValue(db, valueToInsert, formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                                    if(fieldName == "client_version")
                                        clientVersion = child.InnerText;
                                    prevFFID = fIDX;
                                    previousRoster = false;
                                    break;
                            }
                        }
                        previousFieldName = fieldName;
                    }
                }
                try
                {
                    db.SaveChanges();
                }
                catch(Exception ex)
                {
                    string exLog = "";
                    if(ex is DbEntityValidationException)
                    {
                        DbEntityValidationException dbEx = (DbEntityValidationException)ex;
                        foreach(var validationErrors in dbEx.EntityValidationErrors)
                        {
                            foreach(var validationError in validationErrors.ValidationErrors)
                            {
                                exLog += "Property: " + validationError.PropertyName + "  Error: " + validationError.ErrorMessage + "\r\n";
                            }
                        }
                    }
                    else
                    {
                        exLog = ex.Message + "\r\n" + ex.StackTrace;
                    }
                    string folderPath = HttpContext.Current.Server.MapPath("~/LogFiles/");
                    if(!Directory.Exists(folderPath))
                    {
                        Directory.CreateDirectory(folderPath);
                    }
                    StreamWriter file = new StreamWriter(folderPath + "\\MobileConnection.txt", true);
                    file.WriteLine("____________________________________________________________________________");
                    file.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " Error on " + fileName);
                    file.WriteLine(exLog);
                    file.WriteLine("____________________________________________________________________________");
                    file.Close();

                    db.Database.ExecuteSqlCommand("DELETE FormResponse WHERE id=" + formResponseID);
                    Utility.SaveErrorResponse(fileContent, fileName);
                    if(fileName.Length > 0)
                    {
                        File.Delete(Utility.GetResponseFilesFolderName() + "incoming\\" + fileName);
                    }
                    return "ko";
                }

                FormResponse.updateClientVersion(formResponseID, clientVersion);
                //Index.GenerateIndexesHASH(formParentID, formResponseID);
                //ServerSideCalculatedField.GenerateSingle(formParentID, formResponseID);
                //UserToFormResponses.GenerateAssociationForAllUsers(formParentID, formResponseID);

                //SaveProcessedResponse(fileContent, formResponseID.ToString().PadLeft(9, '0'));
                SaveFileInResponseFilesFolder(text, fileName, GeneralEnums.ResponseFilesFolderNames.processed);
                DeleteFormFromResponseFileFolder(fileName, GeneralEnums.ResponseFilesFolderNames.incoming);

                return "ok";
            }
        }
        catch(Exception ex)
        {
            LogUtils.WriteFileErrorLog(ex, fileName, fileContent);
            return "ko";
        }
        finally
        {
            //file.Close();
        }
    }
Exemplo n.º 19
0
    /// <summary>
    /// Updates all the position index of a Formresponse
    /// </summary>
    /// <param name="formResponseID">the id of the formresponse</param>
    public static void setPositionIndex(int formResponseID)
    {
        GRASPEntities db = new GRASPEntities();

        var items = from rv in db.ResponseValue
                    where rv.FormResponseID == formResponseID
                    select rv;

        foreach(var i in items)
        {
            i.positionIndex = getPositionIndex((int)i.formFieldId);
        }

        db.SaveChanges();
    }
Exemplo n.º 20
0
    /// <summary>
    /// Deletes all the response value of a formresponse
    /// </summary>
    /// <param name="formResponseID">the id of the formresponse</param>
    public static void deleteResponsesValues(int formResponseID)
    {
        GRASPEntities db = new GRASPEntities();

        db.Database.ExecuteSqlCommand("DELETE FROM FormResponse_ResponseValue WHERE FormResponse_id = {0}", formResponseID);

        var items = from rv in db.ResponseValue
                    where rv.FormResponseID == formResponseID
                    select rv;

        foreach(var i in items)
        {
            db.ResponseValue.Remove(i);
        }

        db.SaveChanges();
    }
Exemplo n.º 21
0
    protected void rgReports_RowDrop(object sender, Telerik.Web.UI.GridDragDropEventArgs e)
    {
        if(string.IsNullOrEmpty(e.HtmlElement))
        {
            if(e.DestDataItem != null && e.DestDataItem.OwnerGridID == rgReports.ClientID)
            {
                //reorder items in pending grid
                int reportFieldId = Convert.ToInt32(e.DraggedItems[0].GetDataKeyValue("ReportFieldID").ToString());

                using(GRASPEntities db = new GRASPEntities())
                {
                    ReportField reportField = ReportField.GetReportField(db,reportFieldId);
                    int orderIdx = 0;
                    if(reportField.ReportFieldOrder != null)
                    {
                        orderIdx = reportField.ReportFieldOrder.Value;

                        if(e.DropPosition == GridItemDropPosition.Above && e.DestDataItem.ItemIndex < e.DraggedItems[0].ItemIndex)
                        {
                            int position = e.DestDataItem.ItemIndex - e.DraggedItems[0].ItemIndex;
                            orderIdx += position;
                            reportField.ReportFieldOrder = orderIdx;
                            ReportField.ReorderReportField(db, reportField.ReportFieldID, e.DestDataItem.ItemIndex+1, e.DraggedItems[0].ItemIndex, 1);
                            db.SaveChanges();
                            //todo: reorder element, (order+1) where < e.DraggedItems[0].ItemIndex and >= e.DestDataItem.ItemIndex
                        }
                        if(e.DropPosition == GridItemDropPosition.Below && e.DestDataItem.ItemIndex > e.DraggedItems[0].ItemIndex)
                        {
                            int position = e.DestDataItem.ItemIndex - e.DraggedItems[0].ItemIndex;
                            orderIdx += position;
                            reportField.ReportFieldOrder = orderIdx;
                            ReportField.ReorderReportField(db, reportField.ReportFieldID, e.DraggedItems[0].ItemIndex+1, e.DestDataItem.ItemIndex+1, -1);
                            db.SaveChanges();
                            //todo: reorder element, (order-1) where > e.DraggedItems[0].ItemIndex and <= e.DestDataItem.ItemIndex
                        }
                    }
                    else
                    {

                    }
                }
                rgReports.Rebind();

                //int destinationItemIndex = orderIdx - (rgReports.PageSize * rgReports.CurrentPageIndex);
                //e.DestinationTableView.Items[destinationItemIndex].Selected = true;
            }
        }
    }
Exemplo n.º 22
0
    public static string SaveFormAsJSON(string result, int formID)
    {
        //Stopwatch stopWatch = new Stopwatch();
        //stopWatch.Start();

        //try
        //{
            int formResponseID = FormResponse.createFormResponse(formID);
            Dictionary<string, Object> values = JsonConvert.DeserializeObject<Dictionary<string, Object>>(result);
            string[,] fieldTypeMapping = FormField.getFormFieldTypeMap(formID); //idx= 0:name;1:id;2:type;3:positionIndex
            int fIDX = -1;
            string coords = "";

            GRASPEntities db = new GRASPEntities();

            foreach(var v in values)
            {
                fIDX = -1;
                //ffields.TryGetValue(v.Key, out ffID);
                //int tmp22 = fieldTypeMapping.GetLength(0);
                for(int i = 0; i < fieldTypeMapping.GetLength(0); i++)
                {
                    if(v.Key == fieldTypeMapping[i, 0])
                    {
                        fIDX = i;
                        break;
                    }
                }

                if(fIDX == -1)
                {
                    int ind = v.Key.IndexOf("LatDE");
                    if(ind > 0)
                    {
                        coords = v.Value.ToString();
                    }
                    ind = v.Key.IndexOf("LongDE");
                    if(ind > 0)
                    {
                        coords = v.Value.ToString() + " " + coords;
                        string tmp = v.Key.Substring(0, ind);
                        int ffID = FormField.getIdFromName(tmp, formID);
                        coords = coords.Replace(",", ".");

                        ResponseValue.createResponseValue(coords, formResponseID, ffID, 0);
                        //ResponseValue.createResponseValue(db, coords, formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0, "GEOLOCATION");
                        FormResponseCoord.createFormResponseCoord(coords, formResponseID);
                        coords = "";
                    }
                }
                else
                {
                    switch(fieldTypeMapping[fIDX, 2])
                    {
                        case "REPEATABLES_BASIC":
                        case "REPEATABLES":
                            bool isEmpty = true;
                            int i = 0;
                            JArray rVal;
                            try
                            {
                                rVal = (JArray)values[v.Key];

                                foreach(var r in rVal)
                                {
                                    isEmpty = false;
                                    InsertRepeatable(db, r.ToString(), fieldTypeMapping, v.Key, formResponseID, ++i);
                                }
                            }
                            catch(Exception ex)
                            {
                                isSaved = "false";
                            }
                            if(!isEmpty) //s3 what is this for?
                            {
                                ResponseValue.createResponseValue(db, i.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), -1);
                            }

                            break;
                        case "IMAGE":
                            string folderPath = Utility.GetImagesFolderPath() + Utility.GetImagesFolderName() + "\\WEB\\" + formResponseID;
                            string value = v.Value.ToString().Substring(v.Value.ToString().IndexOf("base64") + 7);
                            var bytes = Convert.FromBase64String(value);

                            bool isExists = System.IO.Directory.Exists(folderPath);
                            if(!isExists)
                                System.IO.Directory.CreateDirectory(folderPath);

                            using(var imageFile = new FileStream(folderPath + "\\" + v.Key + ".jpg", FileMode.Create))
                            {
                                imageFile.Write(bytes, 0, bytes.Length);
                                imageFile.Flush();
                            }

                            string imagePthValue = Utility.GetGRASPImagesVirtualDirectory() + Utility.GetImagesFolderName() + "\\WEB\\" + formResponseID + "\\" + v.Key.ToString() + ".jpg";
                            ResponseValue.createResponseValue(db, imagePthValue, formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                            break;
                        case "DROP_DOWN_LIST":
                            Dictionary<string, Object> ResVal = JsonConvert.DeserializeObject<Dictionary<string, Object>>(v.Value.ToString());
                            ResponseValue.createResponseValue(db, ResVal.FirstOrDefault().Value.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                            break;
                        case "NUMERIC_TEXT_FIELD":
                            ResponseValue.createResponseValue(db, v.Value.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0, "NUMERIC_TEXT_FIELD");
                            break;
                        default:
                            try
                            {
                                    ResponseValue.createResponseValue(db, v.Value.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);
                            }
                            catch(Exception ex)
                            {
                                //Dictionary<string, Object> ResValDef = JsonConvert.DeserializeObject<Dictionary<string, Object>>(v.Value.ToString());
                                //ResponseValue.createResponseValue(db, ResValDef.FirstOrDefault().Value.ToString(), formResponseID, Convert.ToInt32(fieldTypeMapping[fIDX, 1]), Convert.ToInt32(fieldTypeMapping[fIDX, 3]), 0);

                                string fpath = HttpContext.Current.Server.MapPath("~/LogFiles/");
                                if(!Directory.Exists(fpath))
                                {
                                    Directory.CreateDirectory(fpath);
                                }
                                string val = "";
                                if(v.Value != null)
                                {
                                    val = " FieldValue : " + v.Value.ToString();
                                }
                                if(v.Key != null)
                                {
                                    val += " [key:" + v.Key.ToString() + "]\r\n";
                                }
                                WriteTextFile("\r\nERROR-1913  Date: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n" + ex.Message + "\r\n" + ex.StackTrace + "\r\n" + result + "\r\n" + val + "\r\n---------------\r\n", fpath + "\\DataEntryWebFormJSON.txt");

                            }
                            break;
                    }
                }
            }
            db.SaveChanges();

            //stopWatch.Stop();
            //// Get the elapsed time as a TimeSpan value.
            //TimeSpan ts = stopWatch.Elapsed;
            //// Format and display the TimeSpan value.
            //string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:000}",
            //    ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds);
            //Debug.WriteLine("RunTime: " + elapsedTime);

            Index.GenerateIndexesHASH(formID, formResponseID);
            ServerSideCalculatedField.GenerateSingle(formID, formResponseID);
            UserToFormResponses.GenerateAssociationForAllUsers(formID, formResponseID);

            return formID.ToString();
        //}
        //catch(Exception ex)
        //{
        //    string folderPath = HttpContext.Current.Server.MapPath("~/LogFiles/");
        //    if(!Directory.Exists(folderPath))
        //    {
        //        Directory.CreateDirectory(folderPath);
        //    }
        //    string loggedUser = HttpContext.Current.User.Identity.Name.ToString();

        //    WriteTextFile("Date: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\nUser: "******"\r\n" + ex.Message + "\r\n" + ex.StackTrace + "\r\n",folderPath+"\\DataEntryWebForm.txt");
        //    return "ERROR: " + ex.Message.ToString();
        //}
    }