in Services/DataX.SimulatedData/DataX.SimulatedData.DataGenService/DataGen.cs [115:227]
public string GeneratePropertyString(Properties property, bool isFirstProperty)
{
string result = "";
string propertyName = "";
try
{
propertyName = property.name;
if (property.type.ToLower() != "struct")
{
if (!string.IsNullOrEmpty(property.value))
{
if (property.type.ToLower() == "long" || property.type.ToLower() == "int" || property.type.ToLower() == "double")
{
result += (isFirstProperty) ? ($"\"{property.name}\":{property.value}")
: ($",\"{property.name}\":{property.value}");
}
else if (property.type.ToLower() == "string")
{
result += (isFirstProperty) ? ($"\"{property.name}\":\"{property.value}\"")
: ($",\"{property.name}\":\"{property.value}\"");
}
}
else if (!string.IsNullOrEmpty(property.minRange) && !string.IsNullOrEmpty(property.maxRange))
{
if (!property.castAsString)
{
if (property.type.ToLower() == "array")
{
//add first number
result += (isFirstProperty) ? ($"\"{property.name}\":[") : ($",\"{property.name}\":[");
if (property.length > 0)
{
result += GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange));
}
//add rest of array
for (int i = 0; i < property.length - 1; i++)
{
result += "," + GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange));
}
//close array
result += "]";
}
else if (property.type.ToLower() == "long" || property.type.ToLower() == "int")
{
result += (isFirstProperty) ? ($"\"{property.name}\":{GetRandomInt(int.Parse(property.minRange), int.Parse(property.maxRange))}")
: ($",\"{property.name}\":{GetRandomInt(int.Parse(property.minRange), int.Parse(property.maxRange))}");
}
else if (property.type.ToLower() == "decimal" || property.type.ToLower() == "double")
{
result += (isFirstProperty) ? ($"\"{property.name}\":{GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange))}")
: ($",\"{property.name}\":{GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange))}");
}
else
{
throw new Exception("Unknown type of data being requested");
}
}
else
{
if (property.type.ToLower() == "array")
{
//add first number
result += (isFirstProperty) ? ($"\"{property.name}\":[") : ($",\"{property.name}\":[");
if (property.length > 0)
{
result += "\"" + GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange)) + "\"";
}
//add rest of array
for (int i = 0; i < property.length - 1; i++)
{
result += "," + "\"" + GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange)) + "\"";
}
//close array
result += "]";
}
else if (property.type.ToLower() == "long" || property.type.ToLower() == "int")
{
result += (isFirstProperty) ? ($"\"{property.name}\":\"{GetRandomInt(int.Parse(property.minRange), int.Parse(property.maxRange))}\"")
: ($",\"{property.name}\":\"{GetRandomInt(int.Parse(property.minRange), int.Parse(property.maxRange))}\"");
}
else if (property.type.ToLower() == "decimal" || property.type.ToLower() == "double")
{
result += (isFirstProperty) ? ($"\"{property.name}\":\"{GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange))}\"")
: ($",\"{property.name}\":\"{GetRandomDouble(double.Parse(property.minRange), double.Parse(property.maxRange))}\"");
}
else
{
throw new Exception("Unknown type of data being requested");
}
}
}
else if (property.type.ToLower() == "datetime")
{
result += (isFirstProperty) ? ($"\"{property.name}\":\"{DateTime.UtcNow.AddSeconds(property.utcAddSeconds).ToString(property.datetimeStringFormat)}\"")
: ($",\"{property.name}\":\"{DateTime.UtcNow.AddSeconds(property.utcAddSeconds).ToString(property.datetimeStringFormat)}\"");
}
else if (property.valueList != null)
{
result += (isFirstProperty) ? ($"\"{property.name}\":\"{property.valueList[GetRandomInt(0, property.valueList.Count)]}\"")
: ($",\"{property.name}\":\"{property.valueList[GetRandomInt(0, property.valueList.Count)]}\"");
}
}
else
{
result += (isFirstProperty) ? ($"\"{property.name}\":{{{GeneratePropertyString(property.properties)}}}") : ($",\"{property.name}\":{{{GeneratePropertyString(property.properties)}}}");
}
}
catch (Exception e)
{
throw new Exception(e.Message + " on " + propertyName);
}
return result;
}