1
- namespace ServiceStack . Northwind . ServiceInterface
1
+ using System . Collections . Generic ;
2
+ using System . Linq ;
3
+ using ServiceStack . Common . Extensions ;
4
+ using ServiceStack . Northwind . ServiceModel . Operations ;
5
+ using ServiceStack . Northwind . ServiceModel . Types ;
6
+ using ServiceStack . OrmLite ;
7
+ using ServiceStack . ServiceInterface ;
8
+
9
+ namespace ServiceStack . Northwind . ServiceInterface
2
10
{
3
- using System . Collections . Generic ;
4
- using System . Linq ;
5
- using ServiceStack . Common . Extensions ;
6
- using ServiceStack . Northwind . ServiceModel . Operations ;
7
- using ServiceStack . Northwind . ServiceModel . Types ;
8
- using ServiceStack . OrmLite ;
9
- using ServiceStack . ServiceInterface ;
10
-
11
- public class OrdersService : Service
12
- {
13
- private const int PageCount = 20 ;
14
-
15
- public IDbConnectionFactory DbFactory { get ; set ; }
16
-
17
- public object Get ( Orders request )
18
- {
19
- using ( var dbConn = DbFactory . OpenDbConnection ( ) )
20
- using ( var dbCmd = dbConn . CreateCommand ( ) )
21
- {
22
- List < Order > orders ;
23
-
24
- if ( request . CustomerId . IsNullOrEmpty ( ) )
25
- {
26
- orders = dbCmd . Select < Order > ( order => order . OrderByDescending ( o => o . OrderDate ) )
27
- . Skip ( ( request . Page . GetValueOrDefault ( 1 ) - 1 ) * PageCount )
28
- . Take ( PageCount )
29
- . ToList ( ) ;
30
- }
31
- else orders = dbCmd . Select < Order > ( order => order . Where ( o => o . CustomerId == request . CustomerId ) ) ;
32
-
33
- if ( orders . Count == 0 )
34
- return new OrdersResponse ( ) ;
35
-
36
- var orderDetails = dbCmd . Select < OrderDetail > ( detail => Sql . In ( detail . OrderId , orders . ConvertAll ( x => x . Id ) ) ) ;
37
-
38
- var orderDetailsLookup = orderDetails . ToLookup ( o => o . OrderId ) ;
39
-
40
- var customerOrders = orders . ConvertAll ( o =>
41
- new CustomerOrder
42
- {
43
- Order = o ,
44
- OrderDetails = orderDetailsLookup [ o . Id ] . ToList ( )
45
- } ) ;
46
-
47
- return new OrdersResponse { Results = customerOrders } ;
48
- }
49
- }
50
- }
51
- }
11
+ public class OrdersService : Service
12
+ {
13
+ private const int PageCount = 20 ;
14
+
15
+ public object Get ( Orders request )
16
+ {
17
+ var orders = request . CustomerId . IsNullOrEmpty ( )
18
+ ? Db . Select < Order > ( order => order . OrderByDescending ( o => o . OrderDate ) )
19
+ . Skip ( ( request . Page . GetValueOrDefault ( 1 ) - 1 ) * PageCount )
20
+ . Take ( PageCount )
21
+ . ToList ( )
22
+ : Db . Select < Order > ( order => order . Where ( o => o . CustomerId == request . CustomerId ) ) ;
23
+
24
+ if ( orders . Count == 0 )
25
+ return new OrdersResponse ( ) ;
26
+
27
+ var orderDetails = Db . Select < OrderDetail > ( detail => Sql . In ( detail . OrderId , orders . ConvertAll ( x => x . Id ) ) ) ;
28
+
29
+ var orderDetailsLookup = orderDetails . ToLookup ( o => o . OrderId ) ;
30
+
31
+ var customerOrders = orders . ConvertAll ( o => new CustomerOrder {
32
+ Order = o ,
33
+ OrderDetails = orderDetailsLookup [ o . Id ] . ToList ( )
34
+ } ) ;
35
+
36
+ return new OrdersResponse { Results = customerOrders } ;
37
+ }
38
+ }
39
+ }
0 commit comments