diff options
| author | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-03-30 15:29:41 +0000 |
|---|---|---|
| committer | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-03-30 15:29:41 +0000 |
| commit | 225aa1499e37faf9d38257caabbadc68d78b427e (patch) | |
| tree | 102bb7a40c58595348ae9d3c7076201759fe0720 /Decompiler/Gestor.Application.Helpers/CustomLinq.cs | |
| parent | 1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1 (diff) | |
| download | gestor-225aa1499e37faf9d38257caabbadc68d78b427e.tar.gz gestor-225aa1499e37faf9d38257caabbadc68d78b427e.zip | |
decompiler.com
Diffstat (limited to 'Decompiler/Gestor.Application.Helpers/CustomLinq.cs')
| -rw-r--r-- | Decompiler/Gestor.Application.Helpers/CustomLinq.cs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.Helpers/CustomLinq.cs b/Decompiler/Gestor.Application.Helpers/CustomLinq.cs new file mode 100644 index 0000000..b07854b --- /dev/null +++ b/Decompiler/Gestor.Application.Helpers/CustomLinq.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Gestor.Common.Validation; +using Gestor.Model.Domain.Relatorios; + +namespace Gestor.Application.Helpers; + +public static class CustomLinq +{ + public static List<T> CustomWhere<T>(this List<T> list, string propertyName, string query) where T : class + { + PropertyInfo pi = typeof(T).GetProperty(propertyName); + return list.Where((T x) => pi.GetValue(x).ToString().ToLower() + .Contains(query.ToLower())).ToList(); + } + + public static List<T> CustomWhere<T>(this List<T> list, List<FiltroPersonalizado> property, bool buscaIgual = false) where T : class + { + if (property == null || property.Count == 0) + { + return list; + } + return list.Where((T x) => (from p in property + group p by p.Propriedade).ToList().All((IGrouping<string, FiltroPersonalizado> p) => (!p.Any((FiltroPersonalizado s) => s.SemValor)) ? ((!(p.First().Tipo == typeof(DateTime))) ? ((!(p.First().Tipo == typeof(long))) ? ((!(p.First().Tipo == typeof(int))) ? ((!(p.First().Tipo == typeof(decimal))) ? ((!(p.First().Tipo == typeof(Enum))) ? p.Any(delegate(FiltroPersonalizado v) + { + if (!buscaIgual) + { + if (typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null) + { + return ValidationHelper.AlphanumericAndSpace(typeof(T).GetProperty(v.Propriedade).GetValue(x).ToString() + .ToLower() + .Trim()).Contains(ValidationHelper.AlphanumericAndSpace(v.ValorIncial.ToLower().Trim())); + } + return false; + } + return typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && ValidationHelper.AlphanumericAndSpace(typeof(T).GetProperty(v.Propriedade).GetValue(x).ToString() + .ToLower() + .Trim()).Equals(ValidationHelper.AlphanumericAndSpace(v.ValorIncial.ToLower().Trim())); + }) : p.Any((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && ValidationHelper.GetDescription((Enum)typeof(T).GetProperty(v.Propriedade).GetValue(x)).ToLower().Equals(v.ValorIncial.ToLower()))) : p.Any((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (decimal)typeof(T).GetProperty(v.Propriedade).GetValue(x) >= decimal.Parse(v.ValorIncial) && (decimal)typeof(T).GetProperty(v.Propriedade).GetValue(x) <= decimal.Parse(v.ValorFinal))) : p.Any((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (int)typeof(T).GetProperty(v.Propriedade).GetValue(x) >= int.Parse(v.ValorIncial) && (int)typeof(T).GetProperty(v.Propriedade).GetValue(x) <= int.Parse(v.ValorFinal))) : p.Any((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (long)typeof(T).GetProperty(v.Propriedade).GetValue(x) >= long.Parse(v.ValorIncial) && (long)typeof(T).GetProperty(v.Propriedade).GetValue(x) <= long.Parse(v.ValorFinal))) : p.Any((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (DateTime)typeof(T).GetProperty(v.Propriedade).GetValue(x) >= DateTime.Parse(v.ValorIncial) && (DateTime)typeof(T).GetProperty(v.Propriedade).GetValue(x) <= DateTime.Parse(v.ValorFinal).AddDays(1.0).AddSeconds(-1.0))) : p.Any((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) == null || string.IsNullOrWhiteSpace(typeof(T).GetProperty(v.Propriedade)?.GetValue(x).ToString()) || string.IsNullOrEmpty(typeof(T).GetProperty(v.Propriedade)?.GetValue(x).ToString())))).ToList(); + } + + public static List<T> CustomNot<T>(this List<T> list, List<FiltroPersonalizado> property) where T : class + { + if (property == null || property.Count == 0) + { + return list; + } + return list.Where((T x) => (from p in property + group p by p.Propriedade).ToList().All((IGrouping<string, FiltroPersonalizado> p) => (!p.Any((FiltroPersonalizado s) => s.SemValor)) ? ((!(p.First().Tipo == typeof(DateTime))) ? ((!(p.First().Tipo == typeof(long))) ? ((!(p.First().Tipo == typeof(int))) ? ((!(p.First().Tipo == typeof(decimal))) ? ((!(p.First().Tipo == typeof(Enum))) ? p.All((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && !ValidationHelper.AlphanumericAndSpace(typeof(T).GetProperty(v.Propriedade).GetValue(x).ToString() + .ToLower() + .Trim()).Contains(ValidationHelper.AlphanumericAndSpace(v.ValorIncial.ToLower().Trim()))) : p.All((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && !ValidationHelper.GetDescription((Enum)typeof(T).GetProperty(v.Propriedade).GetValue(x)).ToLower().Contains(v.ValorIncial.ToLower()))) : p.All((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (decimal)typeof(T).GetProperty(v.Propriedade).GetValue(x) != decimal.Parse(v.ValorIncial))) : p.All((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (int)typeof(T).GetProperty(v.Propriedade).GetValue(x) != int.Parse(v.ValorIncial))) : p.All((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (long)typeof(T).GetProperty(v.Propriedade).GetValue(x) != long.Parse(v.ValorIncial))) : p.All((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) != null && (DateTime)typeof(T).GetProperty(v.Propriedade).GetValue(x) != DateTime.Parse(v.ValorIncial))) : p.All((FiltroPersonalizado v) => typeof(T).GetProperty(v.Propriedade)?.GetValue(x) == null || string.IsNullOrWhiteSpace(typeof(T).GetProperty(v.Propriedade)?.GetValue(x).ToString())))).ToList(); + } +} |