public object Get(Orders request) { using (var dbConn = DbFactory.OpenDbConnection()) using (var dbCmd = dbConn.CreateCommand()) { List<Order> orders; if (request.CustomerId.IsNullOrEmpty()) { orders = dbCmd.Select<Order>(order => order.OrderByDescending(o => o.OrderDate)) .Skip((request.Page.GetValueOrDefault(1) - 1)*PageCount) .Take(PageCount) .ToList(); } else orders = dbCmd.Select<Order>(order => order.Where(o => o.CustomerId == request.CustomerId)); if (orders.Count == 0) return new OrdersResponse(); var orderDetails = dbCmd.Select<OrderDetail>(detail => Sql.In(detail.OrderId, orders.ConvertAll(x => x.Id))); var orderDetailsLookup = orderDetails.ToLookup(o => o.OrderId); var customerOrders = orders.ConvertAll(o => new CustomerOrder { Order = o, OrderDetails = orderDetailsLookup[o.Id].ToList() }); return new OrdersResponse {Results = customerOrders}; } }
public object Get(Orders request) { var orders = request.CustomerId.IsNullOrEmpty() ? Db.Select<Order>(order => order.OrderByDescending(o => o.OrderDate)) .Skip((request.Page.GetValueOrDefault(1) - 1)*PageCount) .Take(PageCount) .ToList() : Db.Select<Order>(order => order.Where(o => o.CustomerId == request.CustomerId)); if (orders.Count == 0) return new OrdersResponse(); var orderDetails = Db.Select<OrderDetail>(detail => Sql.In(detail.OrderId, orders.ConvertAll(x => x.Id))); var orderDetailsLookup = orderDetails.ToLookup(o => o.OrderId); var customerOrders = orders.ConvertAll(o => new CustomerOrder { Order = o, OrderDetails = orderDetailsLookup[o.Id].ToList() }); return new OrdersResponse { Results = customerOrders }; }