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
210{
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