public JObject GenerateRulesData()

in Services/DataX.SimulatedData/DataX.SimulatedData.DataGenService/DataGen.cs [252:328]


        public JObject GenerateRulesData(RulesData rule, int counter)
        {
            JObject dataStream = JObject.Parse(rule.dataStream);
            if (rule.triggerConditions != null)
            {
                foreach (var tc in rule.triggerConditions)
                {
                    var parent = dataStream.SelectToken(tc.parentJsonPropertyPath);
                    if (tc.propertyType.ToLower() == "datetime")
                    {
                        parent[tc.propertyName] = DateTime.UtcNow.AddSeconds(tc.utcAddSeconds).ToString(tc.datetimeStringFormat);
                    }
                    else if (tc.propertyType.ToLower() == "double" || tc.propertyType.ToLower() == "decimal")
                    {
                        if (!(tc.ruleNotTriggerTimeInMinutes.Contains(counter)))
                        {
                            if (tc.castAsString)
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleTriggerValue)) ? tc.ruleTriggerValue : GetRandomDouble(tc.ruleTriggerMinRange, tc.ruleTriggerMaxRange).ToString();
                            }
                            else
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleTriggerValue)) ? double.Parse(tc.ruleTriggerValue) : GetRandomDouble(tc.ruleTriggerMinRange, tc.ruleTriggerMaxRange);
                            }
                        }
                        else
                        {
                            if (tc.castAsString)
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleNotTriggerValue)) ? tc.ruleNotTriggerValue : GetRandomDouble(tc.ruleNotTriggerMinRange, tc.ruleNotTriggerMaxRange).ToString();
                            }
                            else
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleNotTriggerValue)) ? double.Parse(tc.ruleNotTriggerValue) : GetRandomDouble(tc.ruleNotTriggerMinRange, tc.ruleNotTriggerMaxRange);
                            }
                        }
                    }
                    else if (tc.propertyType.ToLower() == "int" || tc.propertyType.ToLower() == "long")
                    {
                        if (!(tc.ruleNotTriggerTimeInMinutes.Contains(counter)))
                        {
                            if (tc.castAsString)
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleTriggerValue)) ? tc.ruleTriggerValue : GetRandomInt((int)tc.ruleTriggerMinRange, (int)tc.ruleTriggerMaxRange).ToString();
                            }
                            else
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleTriggerValue)) ? int.Parse(tc.ruleTriggerValue) : GetRandomInt((int)tc.ruleTriggerMinRange, (int)tc.ruleTriggerMaxRange);
                            }
                        }
                        else
                        {
                            if (tc.castAsString)
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleNotTriggerValue)) ? tc.ruleNotTriggerValue : GetRandomInt((int)tc.ruleNotTriggerMinRange, (int)tc.ruleNotTriggerMaxRange).ToString();
                            }
                            else
                            {
                                parent[tc.propertyName] = (!string.IsNullOrEmpty(tc.ruleNotTriggerValue)) ? int.Parse(tc.ruleNotTriggerValue) : GetRandomInt((int)tc.ruleNotTriggerMinRange, (int)tc.ruleNotTriggerMaxRange);
                            }
                        }
                    }
                    else if (tc.propertyType.ToLower() == "string")
                    {
                        if (!(tc.ruleNotTriggerTimeInMinutes.Contains(counter)))
                        {
                            parent[tc.propertyName] = tc.ruleTriggerValue;
                        }
                        else
                        {
                            parent[tc.propertyName] = tc.ruleNotTriggerValue;
                        }
                    }
                }
            }
            return dataStream;
        }