From ddc54f2103c92c085729f48e8a3a98755afdd5ed Mon Sep 17 00:00:00 2001 From: Tarek Lejmi Date: Thu, 29 Oct 2020 01:35:55 +0100 Subject: [PATCH] update to standard 2.1 and Fix Guid Searchable --- AspNetCoreWeb/AspNetCoreWeb.csproj | 4 ++-- .../Attributes/SearchableDoubleAttribute.cs | 10 ++++++++++ .../Providers/GuidSearchExpressionProvider.cs | 18 ++++++++++++++++++ README.md | 18 +++++++++--------- 4 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 AspNetCoreWeb/Providers/GuidSearchExpressionProvider.cs diff --git a/AspNetCoreWeb/AspNetCoreWeb.csproj b/AspNetCoreWeb/AspNetCoreWeb.csproj index 6fabeee..ac2c131 100644 --- a/AspNetCoreWeb/AspNetCoreWeb.csproj +++ b/AspNetCoreWeb/AspNetCoreWeb.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.1 Abdul Rahman (@fingers10) Abdul Rahman (@fingers10) Fingers10.JqueryDataTablesServerSide.AspNetCore @@ -35,7 +35,7 @@ - + diff --git a/AspNetCoreWeb/Attributes/SearchableDoubleAttribute.cs b/AspNetCoreWeb/Attributes/SearchableDoubleAttribute.cs index 903a424..0773028 100644 --- a/AspNetCoreWeb/Attributes/SearchableDoubleAttribute.cs +++ b/AspNetCoreWeb/Attributes/SearchableDoubleAttribute.cs @@ -11,4 +11,14 @@ public SearchableDoubleAttribute() ExpressionProvider = new DoubleSearchExpressionProvider(); } } + + + [AttributeUsage(AttributeTargets.Property)] + public class SearchableGuidAttribute : SearchableAttribute + { + public SearchableGuidAttribute() + { + ExpressionProvider = new GuidSearchExpressionProvider(); + } + } } diff --git a/AspNetCoreWeb/Providers/GuidSearchExpressionProvider.cs b/AspNetCoreWeb/Providers/GuidSearchExpressionProvider.cs new file mode 100644 index 0000000..6272a2f --- /dev/null +++ b/AspNetCoreWeb/Providers/GuidSearchExpressionProvider.cs @@ -0,0 +1,18 @@ +using System; +using System.Linq.Expressions; + +namespace JqueryDataTables.ServerSide.AspNetCoreWeb.Providers +{ + public class GuidSearchExpressionProvider : ComparableSearchExpressionProvider + { + public override ConstantExpression GetValue(string input) + { + if (!Guid.TryParse(input, out var value)) + { + throw new ArgumentException("Invalid search value."); + } + + return Expression.Constant(value); + } + } +} \ No newline at end of file diff --git a/README.md b/README.md index 9d92608..5eaf246 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ If you liked `JqueryDataTablesServerSide` project or if it helped you, please gi * `[SearchableLong]` * `[SearchableDecimal]` * `[SearchableDouble]` +* `[SearchableGuid]` * `[SearchableEnum(typeof(TEnum))]` * `[NestedSearchable]` @@ -82,21 +83,20 @@ And here are the options, # Compatibility Chart >The following chart describes the operator compatibility with data types with green as compatible and red as not compatible. -|Operator|Description|`string`|`DateTime`|`short`|`int`|`long`|`decimal`|`double`|`enum`| +|Operator|Description|`string`|`DateTime`|`short`|`int`|`long`|`decimal`|`double`|`enum`|`guid`| |--------|-----------|--------|----------|-------|-----|------|---------|--------|------| -|`co` |Contains |:heavy_check_mark:|:x:|:x:|:x:|:x:|:x:|:x:|:heavy_check_mark:| +|`co` |Contains |:heavy_check_mark:|:x:|:x:|:x:|:x:|:x:|:x:|:heavy_check_mark:|:heavy_check_mark: |`eq` |Equals | :heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| -|`gt` |GreaterThan| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:| -|`gte` |GreaterThanEqual| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:| -|`lt` |LesserThan| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:| -|`lte` |LesserThanEqual| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:| +|`gt` |GreaterThan| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:|:x: +|`gte` |GreaterThanEqual| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:|:x: +|`lt` |LesserThan| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:|:x: +|`lte` |LesserThanEqual| :x:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:x:|:x: # NuGet: -* [JqueryDataTables.ServerSide.AspNetCoreWeb](https://www.nuget.org/packages/JqueryDataTables.ServerSide.AspNetCoreWeb/) **v4.0.0** +* [JqueryDataTables.ServerSide.AspNetCoreWeb](https://www.nuget.org/packages/JqueryDataTables.ServerSide.AspNetCoreWeb/) **v4.0.1** # Usage: -To activate and make Jquery DataTable communicate with asp.net core backend, - +To activate and make Jquery DataTable communicate with asp.net core backend,1 ## Package Manager: ```c# PM> Install-Package JqueryDataTables.ServerSide.AspNetCoreWeb