This commit is contained in:
2022-03-02 19:16:27 +00:00
parent a84846fbd1
commit f18282de38
2 changed files with 35 additions and 6 deletions

View File

@@ -1145,6 +1145,33 @@ namespace AyaNova.DataList
}
////////////////////////////////////////////////////////////////////////
//
/// <summary>
/// Translate KPI tag filter to PostgreSQL friendly SQL criteria
/// </summary>
public static string KPITagFilterToSqlCriteria(string SqlColumnNameToFilter, List<string> sValue, bool bAny)
{
if(sValue.Count==0) return string.Empty;
//if it's an OR (any) query then need to build individual terms, if it's not then it's just an all or AND query and can pass through as is
if (sValue.Count > 0 && bAny == true)
{
StringBuilder sb = new StringBuilder();
sb.Append(" AND ");
sb.Append("(");
foreach (string s in sValue)
{
sb.Append($"({TagDataFilterToColumnCriteria(SqlColumnNameToFilter, DataListFilterComparisonOperator.Contains, s)}) OR ");
}
var ret = sb.ToString();
return ret.Substring(0, ret.LastIndexOf(" OR ")) + ")";
}
else
{
//it's an AND (not any) query so it's just all inclusive but still contains
return " AND " + TagDataFilterToColumnCriteria(SqlColumnNameToFilter, DataListFilterComparisonOperator.Contains, string.Join(",", sValue));
}
}