From 3427cd8d879336ec62b4db589b739a1461bd01d6 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 5 Oct 2026 13:53:50 -0700 Subject: [PATCH] case 4676 --- server/DataList/DataListSqlFilterCriteriaBuilder.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/DataList/DataListSqlFilterCriteriaBuilder.cs index 01c7f04..1a81ee0 100644 --- a/server/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -843,6 +843,11 @@ namespace Sockeye.DataList sValue = sValue.Replace(nfi.CurrencyGroupSeparator, ""); sValue = sValue.Replace(nfi.CurrencyDecimalSeparator, "."); } + //case 4676 + // Decimal, Currency (after the existing separator normalisation) + if (!decimal.TryParse(sValue, NumberStyles.Number, CultureInfo.InvariantCulture, out var d)) + throw new ArgumentException($"Invalid numeric filter value [{sValue}]"); + sValue = d.ToString(CultureInfo.InvariantCulture); } break; case UiFieldDataType.Integer: @@ -852,6 +857,12 @@ namespace Sockeye.DataList sValue = sValue.Replace(nfi.NumberGroupSeparator, ""); sValue = sValue.Replace(nfi.NumberDecimalSeparator, "."); } + + //casse 4676 + // Integer, InternalId, Enum, MemorySize, Roles + if (!long.TryParse(sValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out var l)) + throw new ArgumentException($"Invalid numeric filter value [{sValue}]"); + sValue = l.ToString(CultureInfo.InvariantCulture); } break; case UiFieldDataType.InternalId: @@ -1152,7 +1163,7 @@ namespace Sockeye.DataList /// public static string TagFilterToSqlCriteriaHelper(string SqlColumnNameToFilter, List sValue, bool bAny) { - if(sValue.Count==0) return string.Empty; + 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) {