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; }
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; }
/// <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(); }
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; }
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); }
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; } }
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(); }
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; }
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(); }
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(); } }
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(); }
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); } }
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); } } }
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; }
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; }
/// <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; }
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(); } }
/// <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(); }
/// <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(); }
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; } } }
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(); //} }