From 3e7b50f4b5c0b048652bf1dcc7e6ba8b0a5f1b20 Mon Sep 17 00:00:00 2001 From: Mesut Talebi Date: Tue, 12 May 2015 15:51:56 +0300 Subject: [PATCH] Release Version 0.3 --- mesoft.gridview/Global.asax.cs | 7 +- .../201412290945027_InitialCreate.Designer.cs | 29 ---- .../201412290945027_InitialCreate.cs | 32 ----- .../201412290945027_InitialCreate.resx | 126 ------------------ mesoft.gridview/Migrations/Configuration.cs | 5 +- mesoft.gridview/Models/Customer.cs | 7 +- mesoft.gridview/Models/ExpresssionBuilder.cs | 118 ++++++++++++++++ .../Models/GridViewModelProvider.cs | 32 ++--- mesoft.gridview/Models/GridviewModel.cs | 107 ++++++++++++++- mesoft.gridview/Scripts/megridview.js | 2 +- .../Views/Home/_CustomersPartial.cshtml | 8 +- .../Views/Home/_GridViewPartial.cshtml | 2 +- mesoft.gridview/mesoft.gridview.csproj | 14 +- mesoft.gridview/packages.config | 1 + .../System.Linq.Dynamic.1.0.4.nupkg | Bin 0 -> 22870 bytes .../lib/net40/System.Linq.Dynamic.dll | Bin 0 -> 49152 bytes 16 files changed, 261 insertions(+), 229 deletions(-) delete mode 100644 mesoft.gridview/Migrations/201412290945027_InitialCreate.Designer.cs delete mode 100644 mesoft.gridview/Migrations/201412290945027_InitialCreate.cs delete mode 100644 mesoft.gridview/Migrations/201412290945027_InitialCreate.resx create mode 100644 mesoft.gridview/Models/ExpresssionBuilder.cs create mode 100644 packages/System.Linq.Dynamic.1.0.4/System.Linq.Dynamic.1.0.4.nupkg create mode 100644 packages/System.Linq.Dynamic.1.0.4/lib/net40/System.Linq.Dynamic.dll diff --git a/mesoft.gridview/Global.asax.cs b/mesoft.gridview/Global.asax.cs index a7e68ea..19affe0 100644 --- a/mesoft.gridview/Global.asax.cs +++ b/mesoft.gridview/Global.asax.cs @@ -30,8 +30,8 @@ protected override void Seed(MyDbContext context) { var customers = new List(); string[] cities = { "Istanbul", "Trabzon", "Ankara", "Izmir", "Samsun", "Erzurum" }; - - var rnd = new Random(0); + DateTime[] dates = {new DateTime(1982, 5, 2), new DateTime(1983, 3, 5), new DateTime(1988,2,9), new DateTime(1999,12,1),new DateTime(2005,5,15),new DateTime(2010,01,01)}; + var rnd = new Random(0); for (int i = 0; i < 39; i++) { @@ -42,7 +42,8 @@ protected override void Seed(MyDbContext context) Country = "Turkey", City = cities[rnd.Next(0, cities.Length - 1)], Phone = "6564811215", - Address = "Address For Company " + i + Address = "Address For Company " + i, + Founded = dates[rnd.Next(0, dates.Length-1)] }; customers.Add(cust); } diff --git a/mesoft.gridview/Migrations/201412290945027_InitialCreate.Designer.cs b/mesoft.gridview/Migrations/201412290945027_InitialCreate.Designer.cs deleted file mode 100644 index 83d9f13..0000000 --- a/mesoft.gridview/Migrations/201412290945027_InitialCreate.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace mesoft.gridview.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.2-31219")] - public sealed partial class InitialCreate : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(InitialCreate)); - - string IMigrationMetadata.Id - { - get { return "201412290945027_InitialCreate"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/mesoft.gridview/Migrations/201412290945027_InitialCreate.cs b/mesoft.gridview/Migrations/201412290945027_InitialCreate.cs deleted file mode 100644 index fb7218f..0000000 --- a/mesoft.gridview/Migrations/201412290945027_InitialCreate.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace mesoft.gridview.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class InitialCreate : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.Customers", - c => new - { - Id = c.Int(nullable: false, identity: true), - CompanyName = c.String(maxLength: 40), - ContactTitle = c.String(maxLength: 40), - Address = c.String(), - City = c.String(), - Country = c.String(), - Phone = c.String(), - }) - .PrimaryKey(t => t.Id); - - } - - public override void Down() - { - DropTable("dbo.Customers"); - } - - } -} diff --git a/mesoft.gridview/Migrations/201412290945027_InitialCreate.resx b/mesoft.gridview/Migrations/201412290945027_InitialCreate.resx deleted file mode 100644 index 8c3f778..0000000 --- a/mesoft.gridview/Migrations/201412290945027_InitialCreate.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAM1Yy24bNxTdF8g/DLhqAUf0o4vUGCVwJDswGtlGxsmemrmSiHLICclRpW/rop/UX+jlvB96xy4KbTTkvec+5vLwSP/89bf/YRULbwnacCWH5GJwTjyQoYq4nA9Jamdv35EP79/85N9G8cr7VtpdOTv0lGZIFtYm15SacAExM4OYh1oZNbODUMWURYpenp//Ri8uKCAEQSzP87+k0vIYsgd8HCkZQmJTJiYqAmGKddwJMlTvgcVgEhbCkOAXBz7XPFpy+HOQexDvRnCG2QQgZsRjUirLLOZ6/dVAYLWS8yDBBSae1wmg3YwJA0UN17X5oeWcX7pyaO1YQoWpsSo+EvDiqugP7bqf1GVS9Q87eIudtmtXddbFIRllIUATrxvseiS0M9zW5EHpeuZ1DM6q0cAJcp8zb5QKm2oYSkitZuLMe0qngoe/w/pZ/QFyKFMhmoliqrjXWsClJ60S0Hb9BWZF+vcR8Wjbj3YdK7eGT17YvbRXl8R7wOBsKqCag0YTAqs0fAIJmlmInpi1oKXDgKyTveidWCMVJ0yu3UMZFOcPjxPxJmz1GeTcLobkVzw/d3wFUblQ5PFVcjx86GN1CvtDSctC+8ytePVYN1GkwZgdYfDrS9SUtfi1gyjkH/36cZ4WSu56M6dE8Wl9ovvnPBsJjrNbZDBZj6duDVZ2w3lHbiyOvClCtcvJMQOwHerAMaiTyDl3UNPKpmyrvGpqpzm3l3cA3XIJ+BOWJNi4xqVQrHhBfiOM3gbH02ScY9DQbGDLKtsqEnICm0Nn1w1SBHdcGztmlk2Ze3WjKO6ZNd/Clg6XkbqN7hJi3ffSw33Pvfawdher7uQdFhcjvWV1QpVT467ouWZ3MxNMb6DakRJpLLfR9S7vFnk2YVobx+A1GbIN2Nw5HLHiwSZYtXhEZhnPtTLacLnsrq0gsXZZxeLhOAVJNVGKpT6GTzsT0x1P2pvPzlXdHfhdXNE1qaJXnNHhBr84p/tVZO/g5ibEw+YseeQObbA2FuKBMxgE38VIcKy3NpgwyWdgbK5mCPLKu44I/f8IQmpMJA5Uhf+5JOOuq3tFV0+xHa3C5JLpcMF0TxvV0KeKrheC7misEvXnmK1+OTrNho76MaC2VvohrJYeOgLpOM3Tv5QPUzU7RU3OD0MSTRUWkCfakEMnap4+X/m0+dvYH4Ph8xrC/VKWEDoiqEFLm3s5U2XDsbpmRqVJ531MwLIIm3SjLZ/hUON2iAOYydRvTKRochtPIbqXj6lNUntjDMRT0bpefLo7fibs2jn7j4l7Mi9RAqbJsQR4lB9TLqIq77s+S2yDcPNSUA9mhTId4ebrCumhdxduAyraN4YEpCOuZ4gTgWDmUQZsCafkhgr9M8xZuC6vne0g+19Eu+3+mLO5ZrEpMGp/938PdX/4vP8XmYZc3yISAAA= - - - dbo - - \ No newline at end of file diff --git a/mesoft.gridview/Migrations/Configuration.cs b/mesoft.gridview/Migrations/Configuration.cs index 4fc5436..65d1a9b 100644 --- a/mesoft.gridview/Migrations/Configuration.cs +++ b/mesoft.gridview/Migrations/Configuration.cs @@ -19,7 +19,7 @@ protected override void Seed(mesoft.gridview.Models.MyDbContext context) { var customers = new List(); string[] cities = {"Istanbul", "Trabzon", "Ankara", "Izmir", "Samsun", "Erzurum"}; - + DateTime[] dates = { new DateTime(1982, 5, 2), new DateTime(1983, 3, 5), new DateTime(1988, 2, 9), new DateTime(1999, 12, 1), new DateTime(2005, 5, 15), new DateTime(2010, 01, 01) }; for (int i = 0; i < 39; i++) { @@ -31,7 +31,8 @@ protected override void Seed(mesoft.gridview.Models.MyDbContext context) Country = "Turkey", City = cities[rnd.Next(0, cities.Length-1)], Phone = "6564811215", - Address = "Address For Company " + i + Address = "Address For Company " + i, + Founded = dates[rnd.Next(0, dates.Length - 1)] }; customers.Add(cust); } diff --git a/mesoft.gridview/Models/Customer.cs b/mesoft.gridview/Models/Customer.cs index cc77d13..f1ca784 100644 --- a/mesoft.gridview/Models/Customer.cs +++ b/mesoft.gridview/Models/Customer.cs @@ -1,4 +1,6 @@ -namespace mesoft.gridview.Models +using System; + +namespace mesoft.gridview.Models { public class Customer { @@ -8,6 +10,7 @@ public class Customer public string Address { get; set; } public string City { get; set; } public string Country { get; set; } - public string Phone { get; set; } + public string Phone { get; set; } + public DateTime Founded { get; set; } } } \ No newline at end of file diff --git a/mesoft.gridview/Models/ExpresssionBuilder.cs b/mesoft.gridview/Models/ExpresssionBuilder.cs new file mode 100644 index 0000000..7b98706 --- /dev/null +++ b/mesoft.gridview/Models/ExpresssionBuilder.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Web; +using System.Web.Mvc; + +namespace mesoft.gridview.Models +{ + public static class ExpresssionBuilder + { + private static readonly MethodInfo containsMethod = typeof(string).GetMethod("Contains"); + private static readonly MethodInfo startsWithMethod = typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) }); + private static readonly MethodInfo endsWithMethod = typeof(string).GetMethod("EndsWith", new Type[] { typeof(string) }); + + + public static Expression> GetExpression(IList filters) + { + if (filters.Count == 0) + return null; + + ParameterExpression param = Expression.Parameter(typeof(T), "t"); + Expression exp = null; + + if (filters.Count == 1) + exp = GetExpression(param, filters[0]); + else if (filters.Count == 2) + exp = GetExpression(param, filters[0], filters[1]); + else + { + while (filters.Count > 0) + { + var f1 = filters[0]; + var f2 = filters[1]; + + if (exp == null) + exp = GetExpression(param, filters[0], filters[1]); + else + exp = Expression.AndAlso(exp, GetExpression(param, filters[0], filters[1])); + + filters.Remove(f1); + filters.Remove(f2); + + if (filters.Count == 1) + { + exp = Expression.AndAlso(exp, GetExpression(param, filters[0])); + filters.RemoveAt(0); + } + } + } + + return Expression.Lambda>(exp, param); + } + + private static Expression GetExpression(ParameterExpression param, FilterObject filter) + { + MemberExpression member = Expression.Property(param, filter.Column); + //ConstantExpression constant = Expression.Constant(filter.Value); + + // NEW LOGIC to handle nullable Decimal and DateTime values + UnaryExpression constant = null; + if (member.Type == typeof(Decimal?)) + { + constant = Expression.Convert(Expression.Constant(Decimal.Parse(filter.Value)) , member.Type); + } + else if (member.Type == typeof(DateTime?)) + { + constant = Expression.Convert(Expression.Constant(DateTime.Parse(filter.Value)), member.Type); + } + else + { + constant = Expression.Convert(Expression.Constant(filter.Value), member.Type); + } + + + switch (filter.Operator) + { + case FilterOperator.Equals: + return Expression.Equal(member, constant); + + case FilterOperator.GreaterThan: + return Expression.GreaterThan(member, constant); + + case FilterOperator.GreaterThanOrEqual: + return Expression.GreaterThanOrEqual(member, constant); + + case FilterOperator.LessThan: + return Expression.LessThan(member, constant); + + case FilterOperator.LessThanOrEqual: + return Expression.LessThanOrEqual(member, constant); + + case FilterOperator.Contains: + return Expression.Call(member, containsMethod, constant); + + case FilterOperator.StartsWith: + return Expression.Call(member, startsWithMethod, constant); + + case FilterOperator.EndsWith: + return Expression.Call(member, endsWithMethod, constant); + + case FilterOperator.NotEqual: + return Expression.Negate(Expression.Equal(member, constant)); + } + + return null; + } + + private static BinaryExpression GetExpression (ParameterExpression param, FilterObject filter1, FilterObject filter2) + { + Expression bin1 = GetExpression(param, filter1); + Expression bin2 = GetExpression(param, filter2); + + return Expression.AndAlso(bin1, bin2); + } + } +} \ No newline at end of file diff --git a/mesoft.gridview/Models/GridViewModelProvider.cs b/mesoft.gridview/Models/GridViewModelProvider.cs index 6037060..9582533 100644 --- a/mesoft.gridview/Models/GridViewModelProvider.cs +++ b/mesoft.gridview/Models/GridViewModelProvider.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Dynamic; using System.Linq.Expressions; using System.Web; using System.Web.Helpers; @@ -47,28 +48,19 @@ private static IQueryable GetResources(IQueryable Customers, //filter if (PagingData.Filters != null) - { - var predicate = PredicateBuilder.True(); - - + { foreach (var filterObj in PagingData.Filters) { - var tempValue = filterObj.Value; - var tempColumn = filterObj.Column; - var tempConj = filterObj.Conjunction; - var tempOpr = filterObj.Operator; - - predicate = predicate. + switch (filterObj.Column) + { + case "City": + if (filterObj.Value.ToLower() != "all") + customers = customers.Where(Extensions.GetWhereClause(filterObj, typeof(string))); + break; - //switch (filterObj.Column) - //{ - // case "City": - // if (filterObj.Value.ToLower() != "all") - // customers = customers.Where(x => x.City == tempValue); - - // break; - //} - } + //Add Other Filter Columns Here + } + } } @@ -109,6 +101,6 @@ private static IQueryable GetResources(IQueryable Customers, .Skip((PagingData.CurrentPage - 1) * PagingData.ItemsPerPage).Take(PagingData.ItemsPerPage); return customers; - } + } } } \ No newline at end of file diff --git a/mesoft.gridview/Models/GridviewModel.cs b/mesoft.gridview/Models/GridviewModel.cs index ab4dde7..deff171 100644 --- a/mesoft.gridview/Models/GridviewModel.cs +++ b/mesoft.gridview/Models/GridviewModel.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; namespace mesoft.gridview.Models { @@ -34,7 +35,7 @@ public class SortObject public class FilterObject { - public string Column { get; set; } + public string Column { get; set; } public string Value { get; set; } @@ -69,5 +70,107 @@ public enum FilterConjunction { And, Or - } + } + + public class Extensions + { + public static string GetWhereClause(FilterObject filterObj, Type valueType) + { + string whereClause = "true"; + if (valueType != typeof (DateTime)) + { + switch (filterObj.Operator) + { + case FilterOperator.Contains: + if (valueType == typeof (string)) + whereClause += string.Format(" {0} {1}.Contains(\"{2}\")", filterObj.Conjunction, + filterObj.Column, filterObj.Value); + break; + case FilterOperator.GreaterThan: + if (valueType != typeof (string)) + whereClause += string.Format(" {0} {1} > {2}", filterObj.Conjunction, filterObj.Column, + filterObj.Value); + break; + case FilterOperator.GreaterThanOrEqual: + if (valueType != typeof (string)) + whereClause += string.Format(" {0} {1} >= {2}", filterObj.Conjunction, filterObj.Column, + filterObj.Value); + break; + case FilterOperator.LessThan: + if (valueType != typeof (string)) + whereClause += string.Format(" {0} {1} < {2}", filterObj.Conjunction, filterObj.Column, + filterObj.Value); + break; + case FilterOperator.LessThanOrEqual: + if (valueType != typeof (string)) + whereClause += string.Format(" {0} {1} <= {2}", filterObj.Conjunction, filterObj.Column, + filterObj.Value); + break; + case FilterOperator.StartsWith: + if (valueType != typeof (string)) + whereClause += string.Format(" {0} {1}.StartsWith(\"{2}\")", filterObj.Conjunction, + filterObj.Column, filterObj.Value); + break; + case FilterOperator.EndsWith: + if (valueType != typeof (string)) + whereClause += string.Format(" {0} {1}.EndsWith(\"{2}\")", filterObj.Conjunction, + filterObj.Column, filterObj.Value); + break; + case FilterOperator.Equals: + + whereClause += + string.Format(valueType == typeof (string) ? " {0} {1} == \"{2}\"" : " {0} {1} == {2}", + filterObj.Conjunction, filterObj.Column, filterObj.Value); + break; + case FilterOperator.NotEqual: + + whereClause += + string.Format(valueType == typeof (string) ? " {0} {1} != \"{2}\"" : " {0} {1} != {2}", + filterObj.Conjunction, filterObj.Column, filterObj.Value); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + else + { + DateTime dt; + DateTime.TryParse(filterObj.Value, out dt); + + switch (filterObj.Operator) + { + case FilterOperator.Contains: + break; + case FilterOperator.GreaterThan: + + whereClause += string.Format(" {0} {1} > DateTime(\"{2}\")", filterObj.Conjunction, filterObj.Column, dt); + break; + case FilterOperator.GreaterThanOrEqual: + + whereClause += string.Format(" {0} {1} >= DateTime(\"{2}\")", filterObj.Conjunction, filterObj.Column, dt); + break; + case FilterOperator.LessThan: + + whereClause += string.Format(" {0} {1} < DateTime(\"{2}\")", filterObj.Conjunction, filterObj.Column, dt); + break; + case FilterOperator.LessThanOrEqual: + whereClause += string.Format(" {0} {1} <= DateTime(\"{2}\")", filterObj.Conjunction, filterObj.Column, dt); + break; + case FilterOperator.StartsWith: + break; + case FilterOperator.EndsWith: + break; + case FilterOperator.Equals: + whereClause += string.Format(" {0} {1} == DateTime(\"{2}\")", filterObj.Conjunction, filterObj.Column, dt); + break; + case FilterOperator.NotEqual: + whereClause += string.Format(" {0} {1} != DateTime(\"{2}\")", filterObj.Conjunction, filterObj.Column, dt); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + return whereClause; + } + } } \ No newline at end of file diff --git a/mesoft.gridview/Scripts/megridview.js b/mesoft.gridview/Scripts/megridview.js index 653af1c..dba93fb 100644 --- a/mesoft.gridview/Scripts/megridview.js +++ b/mesoft.gridview/Scripts/megridview.js @@ -112,7 +112,7 @@ var $column = $(this).data('filter-column'); var $value = $(this).data('filter-value'); var $operator = $(this).data('filter-operator'); - var $conjunction = $(this).data('filter-conjunction'); + var $conjunction = $(this).data('filter-conjunction'); //creating new filter object var filterObj = { Column: $column, Value: $value, Operator: $operator, Conjunction: $conjunction }; diff --git a/mesoft.gridview/Views/Home/_CustomersPartial.cshtml b/mesoft.gridview/Views/Home/_CustomersPartial.cshtml index b5ae0e8..0775dd8 100644 --- a/mesoft.gridview/Views/Home/_CustomersPartial.cshtml +++ b/mesoft.gridview/Views/Home/_CustomersPartial.cshtml @@ -27,11 +27,14 @@ @(Html.DisplayNameFor(x => x.Customers.FirstOrDefault().Phone)) + + @Html.DisplayNameFor(x=> x.Customers.FirstOrDefault().Founded) + - @if (Model.Customers.Count() > 0) + @if (Model.Customers.Any()) { foreach (var c in Model.Customers) { @@ -43,13 +46,14 @@ @c.City @c.Address @c.Phone + @c.Founded } } else { - +
Warning! No Customers Found! diff --git a/mesoft.gridview/Views/Home/_GridViewPartial.cshtml b/mesoft.gridview/Views/Home/_GridViewPartial.cshtml index 379622f..1d6db7b 100644 --- a/mesoft.gridview/Views/Home/_GridViewPartial.cshtml +++ b/mesoft.gridview/Views/Home/_GridViewPartial.cshtml @@ -35,7 +35,7 @@ @foreach (var city in cityFilters) {
  • @city
  • diff --git a/mesoft.gridview/mesoft.gridview.csproj b/mesoft.gridview/mesoft.gridview.csproj index 4d4c6de..67c233a 100644 --- a/mesoft.gridview/mesoft.gridview.csproj +++ b/mesoft.gridview/mesoft.gridview.csproj @@ -59,6 +59,10 @@ + + ..\packages\System.Linq.Dynamic.1.0.4\lib\net40\System.Linq.Dynamic.dll + True + @@ -122,13 +126,10 @@ Global.asax - - - 201412290945027_InitialCreate.cs - + @@ -202,11 +203,6 @@ - - - 201412290945027_InitialCreate.cs - - 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/mesoft.gridview/packages.config b/mesoft.gridview/packages.config index 5c49e18..3ee448d 100644 --- a/mesoft.gridview/packages.config +++ b/mesoft.gridview/packages.config @@ -15,5 +15,6 @@ + \ No newline at end of file diff --git a/packages/System.Linq.Dynamic.1.0.4/System.Linq.Dynamic.1.0.4.nupkg b/packages/System.Linq.Dynamic.1.0.4/System.Linq.Dynamic.1.0.4.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..9e90df593788f4ccd1ee3d1412607826dfade0b0 GIT binary patch literal 22870 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 O$Fq|yS$gO6?0*0pa1dw! literal 0 HcmV?d00001 diff --git a/packages/System.Linq.Dynamic.1.0.4/lib/net40/System.Linq.Dynamic.dll b/packages/System.Linq.Dynamic.1.0.4/lib/net40/System.Linq.Dynamic.dll new file mode 100644 index 0000000000000000000000000000000000000000..2d142e01a0cb1ee7297460c94d7f19b168afd4da GIT binary patch literal 49152 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