Skip to content

Commit 3293776

Browse files
committed
Update OrdersService.cs
1 parent f74ca24 commit 3293776

File tree

1 file changed

+38
-50
lines changed
  • src/ServiceStack.Northwind/ServiceStack.Northwind.ServiceInterface

1 file changed

+38
-50
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,39 @@
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

Comments
 (0)