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);
        }
Beispiel #3
0
        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++;
        }
Beispiel #4
0
        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);
        }