diff options
Diffstat (limited to 'Codemerx/Gestor.Application/Helpers/CustomLinq.cs')
| -rw-r--r-- | Codemerx/Gestor.Application/Helpers/CustomLinq.cs | 421 |
1 files changed, 421 insertions, 0 deletions
diff --git a/Codemerx/Gestor.Application/Helpers/CustomLinq.cs b/Codemerx/Gestor.Application/Helpers/CustomLinq.cs new file mode 100644 index 0000000..2900b2e --- /dev/null +++ b/Codemerx/Gestor.Application/Helpers/CustomLinq.cs @@ -0,0 +1,421 @@ +using Gestor.Common.Validation;
+using Gestor.Model.Domain.Relatorios;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+namespace Gestor.Application.Helpers
+{
+ public static class CustomLinq
+ {
+ 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>((T x) => {
+ Func<FiltroPersonalizado, bool> func8 = null;
+ Func<FiltroPersonalizado, bool> func9 = null;
+ Func<FiltroPersonalizado, bool> func10 = null;
+ Func<FiltroPersonalizado, bool> func11 = null;
+ Func<FiltroPersonalizado, bool> func12 = null;
+ Func<FiltroPersonalizado, bool> func13 = null;
+ Func<FiltroPersonalizado, bool> func14 = null;
+ List<FiltroPersonalizado> filtroPersonalizados = property;
+ Func<FiltroPersonalizado, string> u003cu003e9_21 = CustomLinq.u003cu003ec__2<T>.u003cu003e9__2_1;
+ if (u003cu003e9_21 == null)
+ {
+ u003cu003e9_21 = (FiltroPersonalizado p) => p.get_Propriedade();
+ CustomLinq.u003cu003ec__2<T>.u003cu003e9__2_1 = u003cu003e9_21;
+ }
+ return filtroPersonalizados.GroupBy<FiltroPersonalizado, string>(u003cu003e9_21).ToList<IGrouping<string, FiltroPersonalizado>>().All<IGrouping<string, FiltroPersonalizado>>((IGrouping<string, FiltroPersonalizado> p) => {
+ Func<FiltroPersonalizado, bool> func;
+ IGrouping<string, FiltroPersonalizado> strs = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_23 = CustomLinq.u003cu003ec__2<T>.u003cu003e9__2_3;
+ if (u003cu003e9_23 == null)
+ {
+ u003cu003e9_23 = (FiltroPersonalizado s) => s.get_SemValor();
+ CustomLinq.u003cu003ec__2<T>.u003cu003e9__2_3 = u003cu003e9_23;
+ }
+ if (strs.Any<FiltroPersonalizado>(u003cu003e9_23))
+ {
+ IGrouping<string, FiltroPersonalizado> strs1 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_4 = func8;
+ if (u003cu003e9_4 == null)
+ {
+ Func<FiltroPersonalizado, bool> func1 = (FiltroPersonalizado v) => {
+ bool value;
+ string str;
+ PropertyInfo propertyInfo1 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo1 != null ? propertyInfo1.GetValue(x) : false);
+ if (!value)
+ {
+ return true;
+ }
+ PropertyInfo propertyInfo = typeof(T).GetProperty(v.get_Propriedade());
+ str = (propertyInfo != null ? propertyInfo.GetValue(x).ToString() : null);
+ return string.IsNullOrWhiteSpace(str);
+ };
+ func = func1;
+ func8 = func1;
+ u003cu003e9_4 = func;
+ }
+ return strs1.All<FiltroPersonalizado>(u003cu003e9_4);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(DateTime))
+ {
+ IGrouping<string, FiltroPersonalizado> strs2 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_5 = func9;
+ if (u003cu003e9_5 == null)
+ {
+ Func<FiltroPersonalizado, bool> func2 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo2 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo2 != null ? propertyInfo2.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return (DateTime)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) != DateTime.Parse(v.get_ValorIncial());
+ };
+ func = func2;
+ func9 = func2;
+ u003cu003e9_5 = func;
+ }
+ return strs2.All<FiltroPersonalizado>(u003cu003e9_5);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(long))
+ {
+ IGrouping<string, FiltroPersonalizado> strs3 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_6 = func10;
+ if (u003cu003e9_6 == null)
+ {
+ Func<FiltroPersonalizado, bool> func3 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo3 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo3 != null ? propertyInfo3.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return (long)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) != long.Parse(v.get_ValorIncial());
+ };
+ func = func3;
+ func10 = func3;
+ u003cu003e9_6 = func;
+ }
+ return strs3.All<FiltroPersonalizado>(u003cu003e9_6);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(int))
+ {
+ IGrouping<string, FiltroPersonalizado> strs4 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_7 = func11;
+ if (u003cu003e9_7 == null)
+ {
+ Func<FiltroPersonalizado, bool> func4 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo4 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo4 != null ? propertyInfo4.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return (int)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) != int.Parse(v.get_ValorIncial());
+ };
+ func = func4;
+ func11 = func4;
+ u003cu003e9_7 = func;
+ }
+ return strs4.All<FiltroPersonalizado>(u003cu003e9_7);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(decimal))
+ {
+ IGrouping<string, FiltroPersonalizado> strs5 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_8 = func12;
+ if (u003cu003e9_8 == null)
+ {
+ Func<FiltroPersonalizado, bool> func5 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo5 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo5 != null ? propertyInfo5.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return (decimal)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) != decimal.Parse(v.get_ValorIncial());
+ };
+ func = func5;
+ func12 = func5;
+ u003cu003e9_8 = func;
+ }
+ return strs5.All<FiltroPersonalizado>(u003cu003e9_8);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() != typeof(Enum))
+ {
+ IGrouping<string, FiltroPersonalizado> strs6 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_10 = func14;
+ if (u003cu003e9_10 == null)
+ {
+ Func<FiltroPersonalizado, bool> func6 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo6 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo6 != null ? propertyInfo6.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return !ValidationHelper.AlphanumericAndSpace(typeof(T).GetProperty(v.get_Propriedade()).GetValue(x).ToString().ToLower().Trim()).Contains(ValidationHelper.AlphanumericAndSpace(v.get_ValorIncial().ToLower().Trim()));
+ };
+ func = func6;
+ func14 = func6;
+ u003cu003e9_10 = func;
+ }
+ return strs6.All<FiltroPersonalizado>(u003cu003e9_10);
+ }
+ IGrouping<string, FiltroPersonalizado> strs7 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_9 = func13;
+ if (u003cu003e9_9 == null)
+ {
+ Func<FiltroPersonalizado, bool> func7 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo7 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo7 != null ? propertyInfo7.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return !ValidationHelper.GetDescription((Enum)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x)).ToLower().Contains(v.get_ValorIncial().ToLower());
+ };
+ func = func7;
+ func13 = func7;
+ u003cu003e9_9 = func;
+ }
+ return strs7.All<FiltroPersonalizado>(u003cu003e9_9);
+ });
+ }).ToList<T>();
+ }
+
+ public static List<T> CustomWhere<T>(this List<T> list, string propertyName, string query)
+ where T : class
+ {
+ PropertyInfo property = typeof(T).GetProperty(propertyName);
+ return (
+ from in list
+ where property.GetValue(x).ToString().ToLower().Contains(query.ToLower())
+ select ).ToList<T>();
+ }
+
+ 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>((T x) => {
+ Func<FiltroPersonalizado, bool> func7 = null;
+ Func<FiltroPersonalizado, bool> func8 = null;
+ Func<FiltroPersonalizado, bool> func9 = null;
+ Func<FiltroPersonalizado, bool> func10 = null;
+ Func<FiltroPersonalizado, bool> func11 = null;
+ Func<FiltroPersonalizado, bool> func12 = null;
+ Func<FiltroPersonalizado, bool> func13 = null;
+ List<FiltroPersonalizado> filtroPersonalizados = property;
+ Func<FiltroPersonalizado, string> u003cu003e9_11 = CustomLinq.u003cu003ec__1<T>.u003cu003e9__1_1;
+ if (u003cu003e9_11 == null)
+ {
+ u003cu003e9_11 = (FiltroPersonalizado p) => p.get_Propriedade();
+ CustomLinq.u003cu003ec__1<T>.u003cu003e9__1_1 = u003cu003e9_11;
+ }
+ return filtroPersonalizados.GroupBy<FiltroPersonalizado, string>(u003cu003e9_11).ToList<IGrouping<string, FiltroPersonalizado>>().All<IGrouping<string, FiltroPersonalizado>>((IGrouping<string, FiltroPersonalizado> p) => {
+ Func<FiltroPersonalizado, bool> func;
+ IGrouping<string, FiltroPersonalizado> strs = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_13 = CustomLinq.u003cu003ec__1<T>.u003cu003e9__1_3;
+ if (u003cu003e9_13 == null)
+ {
+ u003cu003e9_13 = (FiltroPersonalizado s) => s.get_SemValor();
+ CustomLinq.u003cu003ec__1<T>.u003cu003e9__1_3 = u003cu003e9_13;
+ }
+ if (strs.Any<FiltroPersonalizado>(u003cu003e9_13))
+ {
+ IGrouping<string, FiltroPersonalizado> strs1 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_4 = func7;
+ if (u003cu003e9_4 == null)
+ {
+ Func<FiltroPersonalizado, bool> func1 = (FiltroPersonalizado v) => {
+ bool value;
+ string str;
+ string str1;
+ PropertyInfo propertyInfo1 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo1 != null ? propertyInfo1.GetValue(x) : false);
+ if (value)
+ {
+ PropertyInfo propertyInfo = typeof(T).GetProperty(v.get_Propriedade());
+ str = (propertyInfo != null ? propertyInfo.GetValue(x).ToString() : null);
+ if (!string.IsNullOrWhiteSpace(str))
+ {
+ PropertyInfo property1 = typeof(T).GetProperty(v.get_Propriedade());
+ str1 = (property1 != null ? property1.GetValue(x).ToString() : null);
+ return string.IsNullOrEmpty(str1);
+ }
+ }
+ return true;
+ };
+ func = func1;
+ func7 = func1;
+ u003cu003e9_4 = func;
+ }
+ return strs1.Any<FiltroPersonalizado>(u003cu003e9_4);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(DateTime))
+ {
+ IGrouping<string, FiltroPersonalizado> strs2 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_5 = func8;
+ if (u003cu003e9_5 == null)
+ {
+ Func<FiltroPersonalizado, bool> func2 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo2 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo2 != null ? propertyInfo2.GetValue(x) : false);
+ if (!value || !((DateTime)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) >= DateTime.Parse(v.get_ValorIncial())))
+ {
+ return false;
+ }
+ DateTime dateTime = (DateTime)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x);
+ DateTime dateTime1 = DateTime.Parse(v.get_ValorFinal());
+ dateTime1 = dateTime1.AddDays(1);
+ return dateTime <= dateTime1.AddSeconds(-1);
+ };
+ func = func2;
+ func8 = func2;
+ u003cu003e9_5 = func;
+ }
+ return strs2.Any<FiltroPersonalizado>(u003cu003e9_5);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(long))
+ {
+ IGrouping<string, FiltroPersonalizado> strs3 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_6 = func9;
+ if (u003cu003e9_6 == null)
+ {
+ Func<FiltroPersonalizado, bool> func3 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo3 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo3 != null ? propertyInfo3.GetValue(x) : false);
+ if (!value || (long)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) < long.Parse(v.get_ValorIncial()))
+ {
+ return false;
+ }
+ return (long)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) <= long.Parse(v.get_ValorFinal());
+ };
+ func = func3;
+ func9 = func3;
+ u003cu003e9_6 = func;
+ }
+ return strs3.Any<FiltroPersonalizado>(u003cu003e9_6);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(int))
+ {
+ IGrouping<string, FiltroPersonalizado> strs4 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_7 = func10;
+ if (u003cu003e9_7 == null)
+ {
+ Func<FiltroPersonalizado, bool> func4 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo4 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo4 != null ? propertyInfo4.GetValue(x) : false);
+ if (!value || (int)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) < int.Parse(v.get_ValorIncial()))
+ {
+ return false;
+ }
+ return (int)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) <= int.Parse(v.get_ValorFinal());
+ };
+ func = func4;
+ func10 = func4;
+ u003cu003e9_7 = func;
+ }
+ return strs4.Any<FiltroPersonalizado>(u003cu003e9_7);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() == typeof(decimal))
+ {
+ IGrouping<string, FiltroPersonalizado> strs5 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_8 = func11;
+ if (u003cu003e9_8 == null)
+ {
+ Func<FiltroPersonalizado, bool> func5 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo5 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo5 != null ? propertyInfo5.GetValue(x) : false);
+ if (!value || !((decimal)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) >= decimal.Parse(v.get_ValorIncial())))
+ {
+ return false;
+ }
+ return (decimal)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x) <= decimal.Parse(v.get_ValorFinal());
+ };
+ func = func5;
+ func11 = func5;
+ u003cu003e9_8 = func;
+ }
+ return strs5.Any<FiltroPersonalizado>(u003cu003e9_8);
+ }
+ if (p.First<FiltroPersonalizado>().get_Tipo() != typeof(Enum))
+ {
+ IGrouping<string, FiltroPersonalizado> strs6 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_10 = func13;
+ if (u003cu003e9_10 == null)
+ {
+ Func<FiltroPersonalizado, bool> cSu0024u003cu003e8_locals1 = (FiltroPersonalizado v) => {
+ bool value;
+ bool flag;
+ if (!buscaIgual)
+ {
+ PropertyInfo propertyInfo6 = typeof(T).GetProperty(v.get_Propriedade());
+ flag = (propertyInfo6 != null ? propertyInfo6.GetValue(x) : false);
+ if (!flag)
+ {
+ return false;
+ }
+ return ValidationHelper.AlphanumericAndSpace(typeof(T).GetProperty(v.get_Propriedade()).GetValue(x).ToString().ToLower().Trim()).Contains(ValidationHelper.AlphanumericAndSpace(v.get_ValorIncial().ToLower().Trim()));
+ }
+ PropertyInfo propertyInfo = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo != null ? propertyInfo.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return ValidationHelper.AlphanumericAndSpace(typeof(T).GetProperty(v.get_Propriedade()).GetValue(x).ToString().ToLower().Trim()).Equals(ValidationHelper.AlphanumericAndSpace(v.get_ValorIncial().ToLower().Trim()));
+ };
+ func = cSu0024u003cu003e8_locals1;
+ func13 = cSu0024u003cu003e8_locals1;
+ u003cu003e9_10 = func;
+ }
+ return strs6.Any<FiltroPersonalizado>(u003cu003e9_10);
+ }
+ IGrouping<string, FiltroPersonalizado> strs7 = p;
+ Func<FiltroPersonalizado, bool> u003cu003e9_9 = func12;
+ if (u003cu003e9_9 == null)
+ {
+ Func<FiltroPersonalizado, bool> func6 = (FiltroPersonalizado v) => {
+ bool value;
+ PropertyInfo propertyInfo7 = typeof(T).GetProperty(v.get_Propriedade());
+ value = (propertyInfo7 != null ? propertyInfo7.GetValue(x) : false);
+ if (!value)
+ {
+ return false;
+ }
+ return ValidationHelper.GetDescription((Enum)typeof(T).GetProperty(v.get_Propriedade()).GetValue(x)).ToLower().Equals(v.get_ValorIncial().ToLower());
+ };
+ func = func6;
+ func12 = func6;
+ u003cu003e9_9 = func;
+ }
+ return strs7.Any<FiltroPersonalizado>(u003cu003e9_9);
+ });
+ }).ToList<T>();
+ }
+ }
+}
\ No newline at end of file |