From 0ccb63afa091055e205a7ed25861bcbc6cd8d7fe Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 30 Nov 2018 00:10:05 +0000 Subject: [PATCH] --- server/AyaNova/biz/DataFilterBiz.cs | 8 ++++- .../AyaNova/biz/FilterComparisonOperator.cs | 33 +++++++++++++++++-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/server/AyaNova/biz/DataFilterBiz.cs b/server/AyaNova/biz/DataFilterBiz.cs index 80f95ae5..286641d2 100644 --- a/server/AyaNova/biz/DataFilterBiz.cs +++ b/server/AyaNova/biz/DataFilterBiz.cs @@ -263,9 +263,15 @@ namespace AyaNova.Biz AddError(ValidationErrorType.RequiredPropertyEmpty, "Filter", $"Filter array item {i}, object is missing required \"fld\" property "); if (filterItem["op"] == null) AddError(ValidationErrorType.RequiredPropertyEmpty, "Filter", $"Filter array item {i}, object is missing required \"op\" property "); + else + { + var opType = filterItem["op"].Value(); + if (!FilterComparisonOperator.Operators.Contains(opType)) + AddError(ValidationErrorType.InvalidValue, "Filter", $"Filter array item {i}, \"op\" value of \"{opType}\" is not a valid FilterComparisonOperator type"); + } if (filterItem["value"] == null) AddError(ValidationErrorType.RequiredPropertyEmpty, "Filter", $"Filter array item {i}, object is missing required \"value\" property "); - } + } } catch (Newtonsoft.Json.JsonReaderException ex) { diff --git a/server/AyaNova/biz/FilterComparisonOperator.cs b/server/AyaNova/biz/FilterComparisonOperator.cs index b433b2bb..03e443a6 100644 --- a/server/AyaNova/biz/FilterComparisonOperator.cs +++ b/server/AyaNova/biz/FilterComparisonOperator.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; namespace AyaNova.Biz { public static class FilterComparisonOperator @@ -6,13 +7,39 @@ namespace AyaNova.Biz public const string GreaterThan = ">"; public const string GreaterThanOrEqualTo = ">="; public const string LessThan = "<"; - public const string LessThanOrEqualTo = "<="; - public const string NotEqual = "!="; + public const string LessThanOrEqualTo = "<="; + public const string NotEqual = "!="; public const string NotLike = "!%"; public const string StartsWith = "%-"; public const string EndsWith = "-%"; public const string Contains = "-%-"; - public const string NotContains = "!-%-"; + public const string NotContains = "!-%-"; + + public static List operators = null; + public static List Operators + { + get + { + if (operators == null) + { + operators = new List(); + operators.Add(Equality); + operators.Add(GreaterThan); + operators.Add(GreaterThanOrEqualTo); + operators.Add(LessThan); + operators.Add(LessThanOrEqualTo); + operators.Add(NotEqual); + operators.Add(NotLike); + operators.Add(StartsWith); + operators.Add(EndsWith); + operators.Add(Contains); + operators.Add(NotContains); + + } + return operators; + } + } + } }