コード例 #1
0
        public IHttpActionResult LoadRuleByRuleId(dynamic Json)
        {
            string Input = JsonConvert.SerializeObject(Json);

            string output = RuleDataAccessManager.LoadRuleByRuleId(Input);

            JObject returnObject = new JObject();

            if (output != null)
            {
                returnObject = (JObject)JsonConvert.DeserializeObject(output);
            }
            return(Ok(returnObject));
        }
コード例 #2
0
        public IHttpActionResult GetRuleValueForPackingItem(dynamic Json)
        {
            JObject objresponse1 = new JObject();
            var     jsonResponse = JObject.Parse(JsonConvert.SerializeObject(Json));

            jsonResponse["Json"]["OrderTime"]           = DateTime.Now.ToString("HH");
            jsonResponse["Json"]["OrderDate"]           = DateTime.Now.ToString("dd/MM/yyyy");
            Json["Json"]["RuleValue"]                   = "";
            Json["Json"]["PackingItemSpaceConsumption"] = "0";

            string Input  = JsonConvert.SerializeObject(Json);
            string output = RuleDataAccessManager.GetRuleValueForPackingItem(Input);

            if (!string.IsNullOrEmpty(Convert.ToString(output)))
            {
                JObject obj       = (JObject)JsonConvert.DeserializeObject(output);
                string  inputJson = JsonConvert.SerializeObject(jsonResponse);
                JObject obj11     = (JObject)JsonConvert.DeserializeObject(inputJson);
                //string finalResponse = BusinessRuleEvaluator.Condition(ruleText, obj11.ToString());

                var OrderProductList = obj11["Json"]["OrderProductList"].ToList();

                var RuleList = obj["Json"]["RuleList"].ToList();

                for (int i = 0; i < RuleList.Count; i++)
                {
                    if (!string.IsNullOrEmpty(obj["Json"]["RuleList"][i]["RuleText"].ToString()))
                    {
                        string ruleText = obj["Json"]["RuleList"][i]["RuleText"].ToString();
                        string IsJsonRequiredFromServer = obj["Json"]["RuleList"][i]["IsJsonRequiredFromServer"].ToString();
                        string ServicesAction           = obj["Json"]["RuleList"][i]["ServicesAction"].ToString();



                        decimal totalPackingItemCount = 0;
                        string  ruleresultvalue       = "";
                        try
                        {
                            //string responseData = BusinessRuleEvaluator.ParseNotificationMessage(ruleText, obj11.ToString());
                            string responseData = ruleText;
                            int    charLocation = responseData.ToLower().IndexOf("then", 0);
                            string datavalue    = responseData.Substring(3, charLocation - 4);
                            string finalValue   = responseData.Substring(charLocation + 4).Trim();

                            if (ruleText.Contains("'{Item.SKUCode}' in"))
                            {
                                if (charLocation > 0)
                                {
                                    string thenValue = BusinessRuleEvaluator.GetThenValue(finalValue);


                                    string[] array = datavalue.Split('&');

                                    string productIn = "";
                                    for (int k = 0; k < array.Count(); k++)
                                    {
                                        if (array[k].Contains(" in "))
                                        {
                                            productIn = array[k];
                                            string[] skuList     = productIn.Split(new string[] { "in" }, StringSplitOptions.None);
                                            string   productCode = skuList[1].Replace(" ", "").Replace("(", "").Replace(")", "");
                                            string[] SKUCodeList = productCode.Split(',');


                                            for (int op = 0; op < OrderProductList.Count; op++)
                                            {
                                                string poductSku = Convert.ToString(obj11["Json"]["OrderProductList"][op]["ProductCode"]);
                                                if (Array.IndexOf(SKUCodeList, poductSku) >= 0)
                                                {
                                                    totalPackingItemCount += Convert.ToDecimal(obj11["Json"]["OrderProductList"][op]["PackingItemCount"]);
                                                }
                                            }
                                        }
                                    }


                                    obj11["Json"]["Item"]["PackingItemSpace"] = Convert.ToString(totalPackingItemCount);



                                    string condationToValidate = datavalue.Replace(productIn, "");

                                    condationToValidate = condationToValidate.TrimStart('&');
                                    condationToValidate = condationToValidate.TrimEnd('&');
                                    string responseData1 = BusinessRuleEvaluator.ParseNotificationMessage(condationToValidate, obj11.ToString());


                                    bool EvalValue = BusinessRuleEvaluator.CondationEval(responseData1);
                                    if (EvalValue)
                                    {
                                        string[] PackingItemArray = datavalue.Split('&');
                                        string   toBeSearched     = "{Item.PackingItemSpace}";

                                        for (int pi = 0; pi < PackingItemArray.Count(); pi++)
                                        {
                                            if (PackingItemArray[pi].Contains(toBeSearched))
                                            {
                                                Regex digits = new Regex(@"^\D*?((-?(\d+(\.\d+)?))|(-?\.\d+)).*");
                                                Match mx     = digits.Match(PackingItemArray[pi]);
                                                //Console.WriteLine("Input {0} - Digits {1} {2}", str, mx.Success, mx.Groups);

                                                var resultString = mx.Success ? Convert.ToDecimal(mx.Groups[1].Value) : 0;
                                                Json["Json"]["PackingItemSpaceConsumption"] = Convert.ToString(resultString);
                                                break;
                                            }
                                        }

                                        Json["Json"]["RuleValue"] = thenValue.Replace("{", "").Replace("}", "");

                                        string[] skuList     = PackingItemArray[0].Split(new string[] { "in" }, StringSplitOptions.None);
                                        string   productCode = skuList[1].Replace(" ", "").Replace("(", "").Replace(")", "");

                                        Json["Json"]["AllProductCode"] = productCode;

                                        //Json["Json"]["PackingItemSpaceConsumption"] = thenValue.Replace("{", "").Replace("}", "");
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                string[] array = datavalue.Split('&');

                                string productIn = "";
                                for (int k = 0; k < array.Count(); k++)
                                {
                                    if (array[k].Contains("=="))
                                    {
                                        productIn = array[k];
                                        string[] skuProductList  = productIn.Split(new string[] { "==" }, StringSplitOptions.None);
                                        string   productCodeData = skuProductList[1].Replace(" ", "").Replace("'", "");
                                        string[] SKUCodeList     = productCodeData.Split(',');


                                        for (int op = 0; op < OrderProductList.Count; op++)
                                        {
                                            string poductSku = Convert.ToString(obj11["Json"]["OrderProductList"][op]["ProductCode"]);
                                            if (Array.IndexOf(SKUCodeList, poductSku) >= 0)
                                            {
                                                totalPackingItemCount += Convert.ToDecimal(obj11["Json"]["OrderProductList"][op]["PackingItemCount"]);
                                            }
                                        }
                                    }
                                }

                                obj11["Json"]["Item"]["PackingItemSpace"] = Convert.ToString(totalPackingItemCount);


                                string condationToValidate = datavalue.Replace(productIn, "");

                                condationToValidate = condationToValidate.TrimStart('&');
                                condationToValidate = condationToValidate.TrimEnd('&');
                                string responseData1 = BusinessRuleEvaluator.ParseNotificationMessage(condationToValidate, obj11.ToString());


                                bool EvalValue = BusinessRuleEvaluator.CondationEval(responseData1);
                                if (EvalValue)
                                {
                                    string[] PackingItemArray = datavalue.Split('&');
                                    string   toBeSearched     = "{Item.PackingItemSpace}";

                                    for (int pi = 0; pi < PackingItemArray.Count(); pi++)
                                    {
                                        if (PackingItemArray[pi].Contains(toBeSearched))
                                        {
                                            Regex digits = new Regex(@"^\D*?((-?(\d+(\.\d+)?))|(-?\.\d+)).*");
                                            Match mx     = digits.Match(PackingItemArray[pi]);
                                            //Console.WriteLine("Input {0} - Digits {1} {2}", str, mx.Success, mx.Groups);

                                            var resultString = mx.Success ? Convert.ToDecimal(mx.Groups[1].Value) : 0;
                                            Json["Json"]["PackingItemSpaceConsumption"] = Convert.ToString(resultString);
                                            break;
                                        }
                                    }

                                    JObject ruleResponseOutput = BusinessRuleEvaluator.BusinessRuleCondition(ruleText, obj11.ToString());
                                    ruleresultvalue = ruleResponseOutput["Json"]["Rule"]["Result"].ToString();

                                    string[] skuList     = PackingItemArray[0].Split(new string[] { "==" }, StringSplitOptions.None);
                                    string   productCode = skuList[1].Replace(" ", "").Replace("'", "");

                                    Json["Json"]["AllProductCode"] = productCode;
                                }
                            }
                        }
                        catch (Exception)
                        {
                            ruleresultvalue = "";
                        }

                        Json["Json"]["RuleValue"] = ruleresultvalue;


                        if (!string.IsNullOrEmpty(ruleresultvalue))
                        {
                            break;
                        }
                    }
                    else
                    {
                        Json["Json"]["RuleValue"] = "";
                    }
                }
            }
            else
            {
                Json["Json"]["RuleValue"] = "";
            }



            return(Ok(Json));
        }