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 void detectBindings(List<ImportingElement> totalElements) { if (this.fieldType == FormFieldType.REPEATABLES || this.fieldType == FormFieldType.REPEATABLES_BASIC) { foreach (ImportingElement repEl in this.repElements) { repEl.detectBindings(totalElements); } } if (bindReference != null) { string splitString = " and "; if (bindReference.relevant.Contains(" and ")) { splitString = " and "; bindingsPolicy = AND_POLICY; } if (bindReference.relevant.Contains(" or ")) { splitString = " or "; bindingsPolicy = OR_POLICY; } string[] relevantElements = bindReference.relevant.Split(new string[] { splitString }, StringSplitOptions.None); foreach (string relevant in relevantElements) { if (relevant != "" && !relevant.Contains("selected(")) { foreach (string t in bindSymbols) { if (relevant.Contains(t.ToString())) { string[] splitted = relevant.Split(new string[] { t }, StringSplitOptions.None); string referenceName = ""; if (splitted[0].Contains("./../")) { referenceName = splitted[0].Substring(splitted[0].LastIndexOf("/") + 1); string prefix = splitReferenceName(this.reference)[0]; referenceName = prefix + "/" + referenceName; } else { referenceName = cutReferenceName(splitted[0].Trim()); } string bindValue = ""; if (splitted.Length == 1) bindValue = splitted[0]; else { bindValue = splitted[1]; for (int i = 2; i < splitted.Length; i++) { bindValue = bindValue + " = " + splitted[i]; } } ImportingBindingContainer newBinding = new ImportingBindingContainer(); if ((bindValue[0] == '\'') && (bindValue[bindValue.Length - 1] == '\'')) bindValue = bindValue.Substring(1, bindValue.Length - 1); if (t == " = " && bindValue == "") newBinding.bType = BindType.NULL; else if(t == " != " && bindValue == "") newBinding.bType = BindType.NOT_NULL; else if (t == " = " && bindValue != "") newBinding.bType = BindType.EQUALS; else if (t == " != " && bindValue != "") newBinding.bType = BindType.NOT_EQUALS; else if (t == " > ") newBinding.bType = BindType.GREATER_THAN; else if (t == " < ") newBinding.bType = BindType.LESS_THAN; else if (t == " >= ") newBinding.bType = BindType.GREATER_EQUALS_THAN; else if (t == " <= ") newBinding.bType = BindType.LESS_EQUALS_THAN; newBinding.value = bindValue; foreach (ImportingElement el in totalElements) { if (el.fieldType != FormFieldType.SEPARATOR) { Debug.WriteLine("element ref: " + el.reference); Debug.WriteLine("binding referencename: " + referenceName); if (el.reference.Trim() == referenceName.Trim()) { Debug.WriteLine("adding relevant binding"); if (el.fieldType == FormFieldType.CHECK_BOX) { if (bindValue == "true") { newBinding.bType = BindType.IS_CHECKED; newBinding.value = ""; } } if (elementsToBindings.ContainsKey(el)) { elementsToBindings[el].Add(newBinding); } else { elementsToBindings.Add(el, new List<ImportingBindingContainer>()); elementsToBindings[el].Add(newBinding); } } } } } } } else if (relevant.Contains("selected(")) { int beginCut = relevant.IndexOf(relevant) + 9; int endCut = relevant.IndexOf(")", beginCut + 1); string selected = relevant.Substring(beginCut, endCut); string[] splitted = selected.Split(new string[] { " , " }, StringSplitOptions.None); string referenceName = splitted[0]; referenceName = cutReferenceName(referenceName); ImportingBindingContainer newBinding = new ImportingBindingContainer(); newBinding.bType = BindType.IS_CHECKED; foreach(ImportingElement el in totalElements) { if (el.reference.Trim() == referenceName.Trim()) { if (elementsToBindings.ContainsKey(el)) { elementsToBindings[el].Add(newBinding); } else { elementsToBindings.Add(el, new List<ImportingBindingContainer>()); elementsToBindings[el].Add(newBinding); } } } } } } }