Skip to content

Commit 02e3ed3

Browse files
committed
Add MapQueryableResult
1 parent 9bb91fb commit 02e3ed3

File tree

4 files changed

+67
-18
lines changed

4 files changed

+67
-18
lines changed

Build/CommonAssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
//
1616
// You can specify all the values or you can default the Revision and Build Numbers
1717
// by using the '*' as shown below:
18-
[assembly: AssemblyVersion("1.5.14")]
19-
[assembly: AssemblyFileVersion("1.5.14")]
18+
[assembly: AssemblyVersion("1.5.15")]
19+
[assembly: AssemblyFileVersion("1.5.15")]
2020
//[assembly: AssemblyInformationalVersion("1.4.5-editlyalpha2")]

Griddly.Mvc/Griddly.Mvc.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
<Compile Include="Results\DapperResult.cs" />
114114
<Compile Include="Results\DapperSql2008Result.cs" />
115115
<Compile Include="Results\DapperSql2012Result.cs" />
116+
<Compile Include="Results\MapQueryableResult.cs" />
116117
<Compile Include="Results\QueryableResult.cs" />
117118
<Compile Include="SelectListItemGroup.cs" />
118119
<Compile Include="SortField.cs" />
+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using Griddly.Mvc.Linq.Dynamic;
2+
using System;
3+
using System.Collections;
4+
using System.Collections.Generic;
5+
using System.Collections.Specialized;
6+
using System.Linq;
7+
using System.Linq.Expressions;
8+
using System.Reflection;
9+
using System.Web.Helpers;
10+
using System.Web.Mvc;
11+
12+
namespace Griddly.Mvc.Results
13+
{
14+
public class MapQueryableResult<TIn, TOut> : GriddlyResult<TOut>
15+
{
16+
QueryableResult<TIn> _result;
17+
18+
Func<IEnumerable<TIn>, IQueryable<TOut>> _map = null;
19+
20+
public MapQueryableResult(IQueryable<TIn> result, Func<IEnumerable<TIn>, IQueryable<TOut>> map, string viewName = null, Func<IQueryable<TIn>, IQueryable<TIn>> massage = null)
21+
: base(viewName)
22+
{
23+
_result = new QueryableResult<TIn>(result, massage: massage);
24+
_map = map;
25+
}
26+
27+
public override IEnumerable<TOut> GetAll(SortField[] sortFields)
28+
{
29+
return _map(_result.GetAll(sortFields));
30+
}
31+
32+
public override IList<TOut> GetPage(int pageNumber, int pageSize, SortField[] sortFields)
33+
{
34+
return _map(_result.GetPage(pageNumber, pageSize, sortFields)).ToList();
35+
}
36+
37+
public override void PopulateSummaryValues(GriddlySettings<TOut> settings)
38+
{
39+
foreach (GriddlyColumn c in settings.Columns.Where(x => x.SummaryFunction != null))
40+
_result.PopulateSummaryValue(c);
41+
}
42+
43+
public override long GetCount()
44+
{
45+
return _result.GetCount();
46+
}
47+
}
48+
}

Griddly.Mvc/Results/QueryableResult.cs

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
using Griddly.Mvc.Linq.Dynamic;
2-
using System;
3-
using System.Collections;
1+
using System;
42
using System.Collections.Generic;
5-
using System.Collections.Specialized;
63
using System.Linq;
74
using System.Linq.Expressions;
85
using System.Reflection;
96
using System.Web.Helpers;
10-
using System.Web.Mvc;
7+
using Griddly.Mvc.Linq.Dynamic;
118

129
namespace Griddly.Mvc.Results
1310
{
@@ -76,20 +73,23 @@ public override void PopulateSummaryValues(GriddlySettings<T> settings)
7673

7774
// TODO: figure out how to get this in one query
7875
foreach (GriddlyColumn c in settings.Columns.Where(x => x.SummaryFunction != null))
76+
PopulateSummaryValue(c);
77+
}
78+
79+
internal void PopulateSummaryValue(GriddlyColumn c)
80+
{
81+
switch (c.SummaryFunction.Value)
7982
{
80-
switch (c.SummaryFunction.Value)
81-
{
82-
case SummaryAggregateFunction.Sum:
83-
case SummaryAggregateFunction.Average:
84-
case SummaryAggregateFunction.Min:
85-
case SummaryAggregateFunction.Max:
86-
c.SummaryValue = _result.Aggregate(c.SummaryFunction.Value.ToString(), c.ExpressionString);
83+
case SummaryAggregateFunction.Sum:
84+
case SummaryAggregateFunction.Average:
85+
case SummaryAggregateFunction.Min:
86+
case SummaryAggregateFunction.Max:
87+
c.SummaryValue = _result.Aggregate(c.SummaryFunction.Value.ToString(), c.ExpressionString);
8788

88-
break;
89+
break;
8990

90-
default:
91-
throw new InvalidOperationException(string.Format("Unknown summary function {0} for column {1}.", c.SummaryFunction, c.ExpressionString));
92-
}
91+
default:
92+
throw new InvalidOperationException(string.Format("Unknown summary function {0} for column {1}.", c.SummaryFunction, c.ExpressionString));
9393
}
9494
}
9595

0 commit comments

Comments
 (0)