private static List <KeyValuePair <WhereType, IConditionalModel> > GetConditionalList(JToken item) { List <KeyValuePair <WhereType, IConditionalModel> > result = new List <KeyValuePair <WhereType, IConditionalModel> >(); var values = item.Values().First(); foreach (var jToken in values) { WhereType type = (WhereType)Convert.ToInt32(jToken["Key"].Value <int>()); IConditionalModel conditionalModel = null; var value = jToken["Value"]; if (value.ToString().Contains("ConditionalList")) { conditionalModel = new ConditionalTree() { ConditionalList = GetConditionalList(value) }; } else { conditionalModel = new ConditionalModel() { ConditionalType = (ConditionalType)Convert.ToInt32(value["ConditionalType"].Value <int>()), FieldName = value["FieldName"] + "", FieldValue = value["FieldValue"].Value <string>() == null ? null : value["FieldValue"].ToString() }; } result.Add(new KeyValuePair <WhereType, IConditionalModel>(type, conditionalModel)); } return(result); }
public List <IConditionalModel> JsonToConditionalModels(string json) { List <IConditionalModel> conditionalModels = new List <IConditionalModel>(); var jarray = this.Context.Utilities.DeserializeObject <JArray>(json); foreach (var item in jarray) { if (item.Count() > 0) { if (item.ToString().Contains("ConditionalList")) { IConditionalModel model = new ConditionalTree() { ConditionalList = GetConditionalList(item) }; conditionalModels.Add(model); } else { IConditionalModel conditionalModel = new ConditionalModel() { ConditionalType = (ConditionalType)Convert.ToInt32(item["ConditionalType"].Value <int>()), FieldName = item["FieldName"] + "", FieldValue = item["FieldValue"].Value <string>() == null?null: item["FieldValue"].ToString() }; conditionalModels.Add(conditionalModel); } } } return(conditionalModels); }
private void BuilderTree(StringBuilder builder, ConditionalTree item, ref int indexTree, List <SugarParameter> parameters, ref int mainIndex) { var conditionals = ToConditionalCollections(item, ref indexTree, parameters); var sqlobj = ConditionalModelToSql(new List <IConditionalModel> { conditionals }, mainIndex); var sql = sqlobj.Key; RepairReplicationParameters(ref sql, sqlobj.Value, indexTree); parameters.AddRange(sqlobj.Value); var buiderSql = sql; builder.Append(buiderSql); indexTree++; }
private ConditionalCollections ToConditionalCollections(ConditionalTree item, ref int indexTree, List <SugarParameter> parameters) { List <KeyValuePair <WhereType, ConditionalModel> > list = new List <KeyValuePair <WhereType, ConditionalModel> >(); var index = 0; foreach (var it in item.ConditionalList) { ConditionalModel model = new ConditionalModel(); if (it.Value is ConditionalModel) { model = (ConditionalModel)it.Value; } else { var tree = it.Value as ConditionalTree; var con = ToConditionalCollections(tree, ref indexTree, parameters); var sqlobj = ConditionalModelToSql(new List <IConditionalModel> { con }, index); var sql = sqlobj.Key; if (sql.StartsWith(" NULL ")) { sql = Regex.Replace(sql, "^ NULL ", it.Key.ToString().ToUpper()); } RepairReplicationParameters(ref sql, sqlobj.Value, indexTree); model = new ConditionalModel() { FieldName = $"[value=sql{UtilConstants.ReplaceKey}]", FieldValue = sql }; parameters.AddRange(sqlobj.Value); indexTree++; } list.Add(new KeyValuePair <WhereType, ConditionalModel>(it.Key, model)); index++; } var result = new ConditionalCollections() { ConditionalList = list }; return(result); }