From 4a7b36a3088ef450e832ef328217ae1a769de2e2 Mon Sep 17 00:00:00 2001 From: karthikkumar Date: Sat, 18 Feb 2023 22:03:24 +0530 Subject: [PATCH 1/2] Global filter implementation --- .../Core/ITableFilterManager.cs | 23 +- .../Core/TableFilterManager.cs | 456 +++++++++--------- .../Models/TableFilterModel.cs | 22 +- .../PrimeNGTableFilterExtension.cs | 185 ++++--- 4 files changed, 369 insertions(+), 317 deletions(-) diff --git a/PrimeNG.TableFilter/Core/ITableFilterManager.cs b/PrimeNG.TableFilter/Core/ITableFilterManager.cs index 88c9980..ac72157 100644 --- a/PrimeNG.TableFilter/Core/ITableFilterManager.cs +++ b/PrimeNG.TableFilter/Core/ITableFilterManager.cs @@ -4,13 +4,18 @@ namespace PrimeNG.TableFilter.Core { - public interface ITableFilterManager - { - void MultipleOrderDataSet(TableFilterModel tableFilterPayload); - void SingleOrderDataSet(TableFilterModel tableFilterPayload); - void FilterDataSet(string key, TableFilterContext value); - void FiltersDataSet(string key, IEnumerable values); - void ExecuteFilter(); - IQueryable GetResult(); - } + public interface ITableFilterManager + { + void MultipleOrderDataSet(TableFilterModel tableFilterPayload); + + void SingleOrderDataSet(TableFilterModel tableFilterPayload); + + void FilterDataSet(string key, TableFilterContext value, OperatorEnumeration @operator = OperatorEnumeration.None); + + void FiltersDataSet(string key, IEnumerable values); + + void ExecuteFilter(); + + IQueryable GetResult(); + } } \ No newline at end of file diff --git a/PrimeNG.TableFilter/Core/TableFilterManager.cs b/PrimeNG.TableFilter/Core/TableFilterManager.cs index c335295..216f80a 100644 --- a/PrimeNG.TableFilter/Core/TableFilterManager.cs +++ b/PrimeNG.TableFilter/Core/TableFilterManager.cs @@ -1,226 +1,232 @@ -using System.Collections.Generic; -using System.Linq; -using PrimeNG.TableFilter.Models; -using PrimeNG.TableFilter.Utils; - -namespace PrimeNG.TableFilter.Core -{ - /// - /// Class of PrimeNG table filter manager for Entity - /// - public class TableFilterManager : ITableFilterManager - { - private const string ConstantTypeMatchModeStartsWith = "startsWith"; - private const string ConstantTypeMatchModeContains = "contains"; - private const string ConstantTypeMatchModeNotContains = "notContains"; - private const string ConstantTypeMatchModeEndsWith = "endsWith"; - private const string ConstantTypeMatchModeEquals = "equals"; - private const string ConstantTypeMatchModeNotEquals = "notEquals"; - private const string ConstantTypeMatchModeIn = "in"; - private const string ConstantTypeMatchModeLessThan = "lt"; - private const string ConstantTypeMatchModeLessOrEqualsThan = "lte"; - private const string ConstantTypeMatchModeGreaterThan = "gt"; - private const string ConstantTypeMatchModeGreaterOrEqualsThan = "gte"; - private const string ConstantTypeMatchModeBetween = "between"; - private const string ConstantTypeMatchModeIs = "is"; - private const string ConstantTypeMatchModeIsNot = "isNot"; - private const string ConstantTypeMatchModeBefore = "before"; - private const string ConstantTypeMatchModeAfter = "after"; - private const string ConstantTypeMatchModeDateIs = "dateIs"; - private const string ConstantTypeMatchModeDateIsNot = "dateIsNot"; - private const string ConstantTypeMatchModeDateBefore = "dateBefore"; - private const string ConstantTypeMatchModeDateAfter = "dateAfter"; - - - private readonly ILinqOperator _linqOperator; - - public TableFilterManager(IQueryable dataSet) => _linqOperator = new LinqOperator(dataSet); - - /// - /// Set multiple condition for ordering data set to LINQ Operation context - /// - /// PrimeNG load lazy filter payload - /// Throws invalid ordering exception - public void MultipleOrderDataSet(TableFilterModel tableFilterPayload) - { - tableFilterPayload.MultiSortMeta.Select((value, i) => new { i, value }).ToList().ForEach(o => - { - switch (o.value.Order) - { - case (int)SortingEnumeration.OrderByAsc: - if (o.i == 0) - _linqOperator.OrderBy(o.value.Field.FirstCharToUpper()); - else - _linqOperator.ThenBy(o.value.Field.FirstCharToUpper()); - break; - - case (int)SortingEnumeration.OrderByDesc: - if (o.i == 0) - _linqOperator.OrderByDescending(o.value.Field.FirstCharToUpper()); - else - _linqOperator.ThenByDescending(o.value.Field.FirstCharToUpper()); - break; - - default: - throw new System.ArgumentException("Invalid Sort Order!"); - } - }); - } - - /// - /// Set single condition for ordering data set to LINQ Operation context - /// - /// PrimeNG load lazy filter payload - /// Throws invalid ordering parameter exception - public void SingleOrderDataSet(TableFilterModel tableFilterPayload) - { - switch (tableFilterPayload.SortOrder) - { - case (int)SortingEnumeration.OrderByAsc: - _linqOperator.OrderBy(tableFilterPayload.SortField.FirstCharToUpper()); - break; - - case (int)SortingEnumeration.OrderByDesc: - _linqOperator.OrderByDescending(tableFilterPayload.SortField.FirstCharToUpper()); - break; - - default: - throw new System.ArgumentException("Invalid Sort Order!"); - } - } - - /// - /// Set filter condition data to LINQ Operation context - /// - /// Name of property - /// PrimeNG filter context - public void FilterDataSet(string key, TableFilterContext value) - => BaseFilterDataSet(key, value, OperatorEnumeration.None); - - /// - /// The base method for set filter condition data to LINQ Operation context - /// - /// Name of property - /// PrimeNG filter context - /// Operation action condition - /// Throws invalid match mode exception - private void BaseFilterDataSet(string key, TableFilterContext value, OperatorEnumeration operatorAction) - { - if (value.Value == null) - return; - - switch (value.MatchMode) - { - case ConstantTypeMatchModeStartsWith: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantStartsWith - , operatorAction); - break; - - case ConstantTypeMatchModeContains: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantContains - , operatorAction); - break; - - case ConstantTypeMatchModeIn: - _linqOperator.AddFilterListProperty(key.FirstCharToUpper(), value.Value - , operatorAction); - break; - - case ConstantTypeMatchModeEndsWith: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantEndsWith - , OperatorEnumeration.None); - break; - - case ConstantTypeMatchModeEquals: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantEquals - , operatorAction); - break; - - case ConstantTypeMatchModeNotContains: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantContains - , OperatorEnumeration.None, true); - break; - - case ConstantTypeMatchModeNotEquals: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantEquals - , operatorAction, true); - break; - case ConstantTypeMatchModeDateIs: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantDateIs - , operatorAction); - break; - case ConstantTypeMatchModeDateIsNot: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantDateIs - , operatorAction, true); - break; - case ConstantTypeMatchModeDateBefore: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantBefore - , operatorAction); - break; - case ConstantTypeMatchModeDateAfter: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantAfter - , operatorAction); - break; - case ConstantTypeMatchModeLessThan: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantLessThan - , operatorAction); - break; - case ConstantTypeMatchModeLessOrEqualsThan: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantLessThanOrEqual - , operatorAction); - break; - case ConstantTypeMatchModeGreaterThan: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantGreaterThan - , operatorAction); - break; - case ConstantTypeMatchModeGreaterOrEqualsThan: - _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, - LinqOperatorConstants.ConstantGreaterThanOrEqual - , operatorAction); - break; - - - default: - throw new System.ArgumentException("Invalid Match mode!"); - } - } - - /// - /// Set multiple filter condition data to LINQ Operation context - /// - /// Name of property - /// PrimeNG filters context - public void FiltersDataSet(string key, IEnumerable values) - { - foreach (var filterContext in values) - { - var operatorEnum = OperatorConstant.ConvertOperatorEnumeration(filterContext.Operator); - BaseFilterDataSet(key, filterContext, operatorEnum); - } - } - - /// - /// Invoke filter data set from filter context setting - /// - public void ExecuteFilter() => _linqOperator.WhereExecute(); - - /// - /// Get the filter result - /// - /// Filter result - public IQueryable GetResult() => _linqOperator.GetResult(); - } +using System.Collections.Generic; +using System.Linq; +using PrimeNG.TableFilter.Models; +using PrimeNG.TableFilter.Utils; + +namespace PrimeNG.TableFilter.Core +{ + /// + /// Class of PrimeNG table filter manager for Entity + /// + public class TableFilterManager : ITableFilterManager + { + private const string ConstantTypeMatchModeStartsWith = "startsWith"; + private const string ConstantTypeMatchModeContains = "contains"; + private const string ConstantTypeMatchModeNotContains = "notContains"; + private const string ConstantTypeMatchModeEndsWith = "endsWith"; + private const string ConstantTypeMatchModeEquals = "equals"; + private const string ConstantTypeMatchModeNotEquals = "notEquals"; + private const string ConstantTypeMatchModeIn = "in"; + private const string ConstantTypeMatchModeLessThan = "lt"; + private const string ConstantTypeMatchModeLessOrEqualsThan = "lte"; + private const string ConstantTypeMatchModeGreaterThan = "gt"; + private const string ConstantTypeMatchModeGreaterOrEqualsThan = "gte"; + private const string ConstantTypeMatchModeBetween = "between"; + private const string ConstantTypeMatchModeIs = "is"; + private const string ConstantTypeMatchModeIsNot = "isNot"; + private const string ConstantTypeMatchModeBefore = "before"; + private const string ConstantTypeMatchModeAfter = "after"; + private const string ConstantTypeMatchModeDateIs = "dateIs"; + private const string ConstantTypeMatchModeDateIsNot = "dateIsNot"; + private const string ConstantTypeMatchModeDateBefore = "dateBefore"; + private const string ConstantTypeMatchModeDateAfter = "dateAfter"; + + private readonly ILinqOperator _linqOperator; + + public TableFilterManager(IQueryable dataSet) => _linqOperator = new LinqOperator(dataSet); + + /// + /// Set multiple condition for ordering data set to LINQ Operation context + /// + /// PrimeNG load lazy filter payload + /// Throws invalid ordering exception + public void MultipleOrderDataSet(TableFilterModel tableFilterPayload) + { + tableFilterPayload.MultiSortMeta.Select((value, i) => new { i, value }).ToList().ForEach(o => + { + switch (o.value.Order) + { + case (int)SortingEnumeration.OrderByAsc: + if (o.i == 0) + _linqOperator.OrderBy(o.value.Field.FirstCharToUpper()); + else + _linqOperator.ThenBy(o.value.Field.FirstCharToUpper()); + break; + + case (int)SortingEnumeration.OrderByDesc: + if (o.i == 0) + _linqOperator.OrderByDescending(o.value.Field.FirstCharToUpper()); + else + _linqOperator.ThenByDescending(o.value.Field.FirstCharToUpper()); + break; + + default: + throw new System.ArgumentException("Invalid Sort Order!"); + } + }); + } + + /// + /// Set single condition for ordering data set to LINQ Operation context + /// + /// PrimeNG load lazy filter payload + /// Throws invalid ordering parameter exception + public void SingleOrderDataSet(TableFilterModel tableFilterPayload) + { + switch (tableFilterPayload.SortOrder) + { + case (int)SortingEnumeration.OrderByAsc: + _linqOperator.OrderBy(tableFilterPayload.SortField.FirstCharToUpper()); + break; + + case (int)SortingEnumeration.OrderByDesc: + _linqOperator.OrderByDescending(tableFilterPayload.SortField.FirstCharToUpper()); + break; + + default: + throw new System.ArgumentException("Invalid Sort Order!"); + } + } + + /// + /// Set filter condition data to LINQ Operation context + /// + /// Name of property + /// PrimeNG filter context + public void FilterDataSet(string key, TableFilterContext value, OperatorEnumeration @operator = OperatorEnumeration.None) + => BaseFilterDataSet(key, value, @operator); + + /// + /// The base method for set filter condition data to LINQ Operation context + /// + /// Name of property + /// PrimeNG filter context + /// Operation action condition + /// Throws invalid match mode exception + private void BaseFilterDataSet(string key, TableFilterContext value, OperatorEnumeration operatorAction) + { + if (value.Value == null) + return; + + switch (value.MatchMode) + { + case ConstantTypeMatchModeStartsWith: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantStartsWith + , operatorAction); + break; + + case ConstantTypeMatchModeContains: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantContains + , operatorAction); + break; + + case ConstantTypeMatchModeIn: + _linqOperator.AddFilterListProperty(key.FirstCharToUpper(), value.Value + , operatorAction); + break; + + case ConstantTypeMatchModeEndsWith: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantEndsWith + , OperatorEnumeration.None); + break; + + case ConstantTypeMatchModeEquals: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantEquals + , operatorAction); + break; + + case ConstantTypeMatchModeNotContains: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantContains + , OperatorEnumeration.None, true); + break; + + case ConstantTypeMatchModeNotEquals: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantEquals + , operatorAction, true); + break; + + case ConstantTypeMatchModeDateIs: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantDateIs + , operatorAction); + break; + + case ConstantTypeMatchModeDateIsNot: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantDateIs + , operatorAction, true); + break; + + case ConstantTypeMatchModeDateBefore: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantBefore + , operatorAction); + break; + + case ConstantTypeMatchModeDateAfter: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantAfter + , operatorAction); + break; + + case ConstantTypeMatchModeLessThan: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantLessThan + , operatorAction); + break; + + case ConstantTypeMatchModeLessOrEqualsThan: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantLessThanOrEqual + , operatorAction); + break; + + case ConstantTypeMatchModeGreaterThan: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantGreaterThan + , operatorAction); + break; + + case ConstantTypeMatchModeGreaterOrEqualsThan: + _linqOperator.AddFilterProperty(key.FirstCharToUpper(), value.Value, + LinqOperatorConstants.ConstantGreaterThanOrEqual + , operatorAction); + break; + + default: + throw new System.ArgumentException("Invalid Match mode!"); + } + } + + /// + /// Set multiple filter condition data to LINQ Operation context + /// + /// Name of property + /// PrimeNG filters context + public void FiltersDataSet(string key, IEnumerable values) + { + foreach (var filterContext in values) + { + var operatorEnum = OperatorConstant.ConvertOperatorEnumeration(filterContext.Operator); + BaseFilterDataSet(key, filterContext, operatorEnum); + } + } + + /// + /// Invoke filter data set from filter context setting + /// + public void ExecuteFilter() => _linqOperator.WhereExecute(); + + /// + /// Get the filter result + /// + /// Filter result + public IQueryable GetResult() => _linqOperator.GetResult(); + } } \ No newline at end of file diff --git a/PrimeNG.TableFilter/Models/TableFilterModel.cs b/PrimeNG.TableFilter/Models/TableFilterModel.cs index d5ff3c4..e7bf49b 100644 --- a/PrimeNG.TableFilter/Models/TableFilterModel.cs +++ b/PrimeNG.TableFilter/Models/TableFilterModel.cs @@ -1,15 +1,15 @@ using System.Collections.Generic; -using Newtonsoft.Json.Linq; namespace PrimeNG.TableFilter.Models { - public class TableFilterModel - { - public Dictionary Filters { get; set; } - public int First { get; set; } - public int Rows { get; set; } - public string SortField { get; set; } - public int SortOrder { get; set; } - public List MultiSortMeta { get; set; } - } -} + public class TableFilterModel + { + public Dictionary Filters { get; set; } + public int First { get; set; } + public int Rows { get; set; } + public string SortField { get; set; } + public int SortOrder { get; set; } + public List MultiSortMeta { get; set; } + public string GlobalFilter { get; set; } + } +} \ No newline at end of file diff --git a/PrimeNG.TableFilter/PrimeNGTableFilterExtension.cs b/PrimeNG.TableFilter/PrimeNGTableFilterExtension.cs index 4419585..d662dd1 100644 --- a/PrimeNG.TableFilter/PrimeNGTableFilterExtension.cs +++ b/PrimeNG.TableFilter/PrimeNGTableFilterExtension.cs @@ -6,82 +6,123 @@ namespace PrimeNG.TableFilter { - /// - /// Static class contains the extension method for invoke PrimeNG load lazy filter - /// - public static class PrimeNGTableFilterExtension - { - /// - /// Extension method for filter Iterable Object use PrimeNG load lazy filter payload - /// - /// This extension method for object type IEnumerable - /// Type of entity for filter - /// Data for filter - /// PrimeNG filter payload - /// Total of record - /// - public static IEnumerable PrimengTableFilter(this IEnumerable dataSet, - TableFilterModel tableFilterPayload, out int totalRecord) - { - var resultSet = dataSet.AsQueryable(); - resultSet = resultSet.PrimengTableFilter(tableFilterPayload, out totalRecord); - return resultSet.AsEnumerable(); - } + /// + /// Static class contains the extension method for invoke PrimeNG load lazy filter + /// + public static class PrimeNGTableFilterExtension + { + /// + /// Extension method for filter Iterable Object use PrimeNG load lazy filter payload + /// + /// This extension method for object type IEnumerable + /// Type of entity for filter + /// Data for filter + /// PrimeNG filter payload + /// Total of record + /// + public static IEnumerable PrimengTableFilter(this IEnumerable dataSet, + TableFilterModel tableFilterPayload, out int totalRecord) + { + var resultSet = dataSet.AsQueryable(); + resultSet = resultSet.PrimengTableFilter(tableFilterPayload, out totalRecord); + return resultSet.AsEnumerable(); + } - /// - /// Extension method for filter Iterable Object use PrimeNG load lazy filter payload - /// - /// This extension method for object type IQueryable - /// Type of entity for filter - /// Data for filter - /// PrimeNG filter payload - /// Total of record - /// - public static IQueryable PrimengTableFilter(this IQueryable dataSet, - TableFilterModel tableFilterPayload, out int totalRecord) - { - ITableFilterManager tableFilterManager = new TableFilterManager(dataSet); + /// + /// Extension method for filter Iterable Object use PrimeNG load lazy filter payload + /// + /// This extension method for object type IQueryable + /// Type of entity for filter + /// Data for filter + /// PrimeNG filter payload + /// Total of record + /// + public static IQueryable PrimengTableFilter(this IQueryable dataSet, + TableFilterModel tableFilterPayload, out int totalRecord) + { + ITableFilterManager tableFilterManager = new TableFilterManager(dataSet); + ApplyFilters(tableFilterPayload, tableFilterManager); - if (tableFilterPayload.Filters != null && tableFilterPayload.Filters.Any()) - { - foreach (var filterContext in tableFilterPayload.Filters) - { - var filterPayload = filterContext.Value.ToString(); - var filterToken = JToken.Parse(filterPayload); - switch (filterToken) - { - case JArray _: - { - var filters = filterToken.ToObject>(); - tableFilterManager.FiltersDataSet(filterContext.Key, filters); - break; - } - case JObject _: - { - var filter = filterToken.ToObject(); - tableFilterManager.FilterDataSet(filterContext.Key, filter); - break; - } - } - } - tableFilterManager.ExecuteFilter(); - } + return FilterDataSet(tableFilterPayload, tableFilterManager, out totalRecord); + } - if (!string.IsNullOrEmpty(tableFilterPayload.SortField)) - { - tableFilterManager.SingleOrderDataSet(tableFilterPayload); - } + public static IQueryable PrimengTableFilter(this IQueryable dataSet, + TableFilterModel tableFilterPayload, string[] globalFilters, out int totalRecord) + { + ITableFilterManager tableFilterManager = new TableFilterManager(dataSet); - if (tableFilterPayload.MultiSortMeta != null && tableFilterPayload.MultiSortMeta.Any()) - { - tableFilterManager.MultipleOrderDataSet(tableFilterPayload); - } + ApplyGlobalFilter(tableFilterPayload, globalFilters, tableFilterManager); + ApplyFilters(tableFilterPayload, tableFilterManager); - dataSet = tableFilterManager.GetResult(); - totalRecord = dataSet.Count(); - dataSet = dataSet.Skip(tableFilterPayload.First).Take(tableFilterPayload.Rows); - return dataSet; - } - } + return FilterDataSet(tableFilterPayload, tableFilterManager, out totalRecord); + } + + private static void ApplyFilters(TableFilterModel tableFilterPayload, ITableFilterManager tableFilterManager) + { + if (tableFilterPayload.Filters != null && tableFilterPayload.Filters.Any()) + { + foreach (var filterContext in tableFilterPayload.Filters) + { + var filterPayload = filterContext.Value.ToString(); + var filterToken = JToken.Parse(filterPayload); + switch (filterToken) + { + case JArray _: + { + var filters = filterToken.ToObject>(); + tableFilterManager.FiltersDataSet(filterContext.Key, filters); + break; + } + case JObject _: + { + var filter = filterToken.ToObject(); + tableFilterManager.FilterDataSet(filterContext.Key, filter); + break; + } + } + } + tableFilterManager.ExecuteFilter(); + } + + if (!string.IsNullOrEmpty(tableFilterPayload.SortField)) + { + tableFilterManager.SingleOrderDataSet(tableFilterPayload); + } + + if (tableFilterPayload.MultiSortMeta != null && tableFilterPayload.MultiSortMeta.Any()) + { + tableFilterManager.MultipleOrderDataSet(tableFilterPayload); + } + } + + private static void ApplyGlobalFilter(TableFilterModel tableFilterPayload, string[] props, ITableFilterManager tableFilterManager) + { + if (string.IsNullOrEmpty(tableFilterPayload.GlobalFilter)) + return; + foreach (var prop in props) + { + var filter = new TableFilterContext + { + MatchMode = "contains", + Operator = "or", + Value = tableFilterPayload.GlobalFilter + }; + tableFilterManager.FilterDataSet(prop, filter, OperatorEnumeration.Or); + } + + if (tableFilterPayload.Filters == null || !tableFilterPayload.Filters.Any()) + { + tableFilterManager.ExecuteFilter(); + } + } + + private static IQueryable FilterDataSet(TableFilterModel tableFilterPayload, ITableFilterManager tableFilterManager, out int totalRecord) + { + var dataSet = tableFilterManager.GetResult(); + totalRecord = dataSet.Count(); + dataSet = dataSet.Skip(tableFilterPayload.First).Take(tableFilterPayload.Rows); + return dataSet; + } + } } \ No newline at end of file From 10deb39d23d1d6ab0a67d63f9bc1e2fb34b95099 Mon Sep 17 00:00:00 2001 From: karthikkumar Date: Tue, 10 Oct 2023 17:16:38 +0530 Subject: [PATCH 2/2] pacakge version update --- .../PrimeNG.TableFilter.csproj | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/PrimeNG.TableFilter/PrimeNG.TableFilter.csproj b/PrimeNG.TableFilter/PrimeNG.TableFilter.csproj index 7ea6596..811c7c9 100644 --- a/PrimeNG.TableFilter/PrimeNG.TableFilter.csproj +++ b/PrimeNG.TableFilter/PrimeNG.TableFilter.csproj @@ -1,33 +1,33 @@ - - true - Helper for use the PrimeNG table load lazy filter in backend use LINQ to Entity - Weerayut Hongsa - Kusumoto Lab - https://github.com/Kusumoto/PrimeNG.TableFilter - https://github.com/Kusumoto/PrimeNG.TableFilter - 2.1.4 - 2.1.4 - net462;netstandard2.1;net5.0;net6.0;net7.0 - false - LICENSE.md - 2.1.4 - 2.1.4 - 2023 Copyright by Weerayut Hongsa - - - - - - - - - - - - True - - - - + + true + Helper for use the PrimeNG table load lazy filter in backend use LINQ to Entity + Karthikkumar Subramaniam + bright dot + https://github.com/karthiksubramaniam/PrimeNG.TableFilter + https://github.com/karthiksubramaniam/PrimeNG.TableFilter + 2.1.4 + 2.1.4 + net462;netstandard2.1;net5.0;net6.0;net7.0 + false + LICENSE.md + 2.1.4 + 2.1.4 + 2023 Copyright by Karthikkumar Subramaniam + + + + + + + + + + + + True + + + + \ No newline at end of file