diff --git a/src/MaksIT.Core.Tests/Webapi/Models/PagedRequestTests.cs b/src/MaksIT.Core.Tests/Webapi/Models/PagedRequestTests.cs
index 42ef44e..20f11b3 100644
--- a/src/MaksIT.Core.Tests/Webapi/Models/PagedRequestTests.cs
+++ b/src/MaksIT.Core.Tests/Webapi/Models/PagedRequestTests.cs
@@ -2,6 +2,8 @@
using Xunit;
using MaksIT.Core.Webapi.Models; // Ensure namespace matches the actual namespace of PagedRequest
+namespace MaksIT.Core.Tests.Webapi.Models;
+
public class PagedRequestTests {
public class TestEntity {
diff --git a/src/MaksIT.Core/MaksIT.Core.csproj b/src/MaksIT.Core/MaksIT.Core.csproj
index 952b136..8fa1c20 100644
--- a/src/MaksIT.Core/MaksIT.Core.csproj
+++ b/src/MaksIT.Core/MaksIT.Core.csproj
@@ -8,7 +8,7 @@
MaksIT.Core
- 1.3.0
+ 1.3.1
Maksym Sadovnychyy
MAKS-IT
MaksIT.Core
diff --git a/src/MaksIT.Core/Webapi/Models/PagedRequest.cs b/src/MaksIT.Core/Webapi/Models/PagedRequest.cs
index 1c3f500..db01453 100644
--- a/src/MaksIT.Core/Webapi/Models/PagedRequest.cs
+++ b/src/MaksIT.Core/Webapi/Models/PagedRequest.cs
@@ -1,5 +1,6 @@
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
+using System.Text.RegularExpressions;
using MaksIT.Core.Abstractions.Webapi;
public class PagedRequest : RequestModelBase {
@@ -14,12 +15,26 @@ public class PagedRequest : RequestModelBase {
if (string.IsNullOrWhiteSpace(Filters))
return x => true; // Returns an expression that doesn't filter anything.
- // Parse the filter string into a dynamic lambda expression.
+ // Adjust Filters to make Contains, StartsWith, EndsWith, ==, and != case-insensitive
+ string adjustedFilters = Filters
+ .Replace(".Contains(", ".ToLower().Contains(")
+ .Replace(".StartsWith(", ".ToLower().StartsWith(")
+ .Replace(".EndsWith(", ".ToLower().EndsWith(")
+ .Replace("==", ".ToLower() ==")
+ .Replace("!=", ".ToLower() !=");
+
+ // Ensure values are also transformed to lowercase
+ adjustedFilters = Regex.Replace(adjustedFilters, "\"([^\"]+)\"", m => $"\"{m.Groups[1].Value.ToLower()}\"");
+
+ // Parse the adjusted filter string into a dynamic lambda expression
var predicate = DynamicExpressionParser.ParseLambda(
- new ParsingConfig(), false, Filters);
+ new ParsingConfig(), false, adjustedFilters);
+
return predicate;
}
+
+
public Func, IOrderedQueryable> BuildSortExpression() {
if (string.IsNullOrWhiteSpace(SortBy))
return q => (IOrderedQueryable)q; // Cast to IOrderedQueryable