From 105f9588aabfb77c6ba649f657adf285bf744cb9 Mon Sep 17 00:00:00 2001 From: darrudanoo Date: Wed, 29 Sep 2021 17:04:10 -0300 Subject: [PATCH] add BoolSearchExpressionProvider --- .../Attributes/SearchableBoolAttribute.cs | 14 ++++++++++++++ .../Providers/BoolSearchExpressionProvider.cs | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 AspNetCoreWeb/Attributes/SearchableBoolAttribute.cs create mode 100644 AspNetCoreWeb/Providers/BoolSearchExpressionProvider.cs diff --git a/AspNetCoreWeb/Attributes/SearchableBoolAttribute.cs b/AspNetCoreWeb/Attributes/SearchableBoolAttribute.cs new file mode 100644 index 0000000..075139c --- /dev/null +++ b/AspNetCoreWeb/Attributes/SearchableBoolAttribute.cs @@ -0,0 +1,14 @@ +using JqueryDataTables.ServerSide.AspNetCoreWeb.Providers; +using System; + +namespace JqueryDataTables.ServerSide.AspNetCoreWeb.Attributes +{ + [AttributeUsage(AttributeTargets.Property)] + public class SearchableBoolAttribute : SearchableAttribute + { + public SearchableBoolAttribute() + { + ExpressionProvider = new BoolSearchExpressionProvider(); + } + } +} diff --git a/AspNetCoreWeb/Providers/BoolSearchExpressionProvider.cs b/AspNetCoreWeb/Providers/BoolSearchExpressionProvider.cs new file mode 100644 index 0000000..daa56ac --- /dev/null +++ b/AspNetCoreWeb/Providers/BoolSearchExpressionProvider.cs @@ -0,0 +1,18 @@ +using System; +using System.Linq.Expressions; + +namespace JqueryDataTables.ServerSide.AspNetCoreWeb.Providers +{ + public class BoolSearchExpressionProvider : ComparableSearchExpressionProvider + { + public override ConstantExpression GetValue(string input) + { + if (!bool.TryParse(input, out var value)) + { + throw new ArgumentException("Invalid search value."); + } + + return Expression.Constant(value); + } + } +}