public OrderResponseModel GetUserOrders(UserModel user, int page = Constants.DEFAULTPAGE) { var filter = new OrderFilterModel { UserId = user.Id }; var dbOrders = _orderRepository.Get(filter, page: page).ToList(); var orders = new List <OrderModel>(); var orderIds = dbOrders.Select(order => order.Id).ToList(); var itemsFilter = new OrderItemFilterModel { OrderIds = orderIds }; var allItems = _itemRepository.Get(itemsFilter); foreach (var order in dbOrders) { var mappedOrder = _mapper.Map <OrderModel>(order); var currentItems = allItems.Where(item => item.OrderId == order.Id).ToList(); mappedOrder.CurrentItems = _mapper.Map <List <OrderItemModel> >(currentItems); mappedOrder.Total = currentItems.Sum(item => item.SubTotal); orders.Add(mappedOrder); } return(new OrderResponseModel { Orders = orders, PageCount = GetPageCount(user.Id) }); }
public List <OrderModel> GetAllOrders(bool isPaid = true, bool isUnpaid = true, string field = null, string ascending = Constants.DEFAULTSORTORDER, int page = Constants.DEFAULTPAGE, bool getRemoved = false) { var filter = new OrderFilterModel { IsPaid = isPaid, IsUnpaid = isUnpaid }; var dbOrders = _orderRepository.Get(filter, field, ascending == Constants.DEFAULTSORTORDER, getRemoved, page); var orders = new List <OrderModel>(); var orderIds = dbOrders.Select(order => order.Id).ToList(); var itemsFilter = new OrderItemFilterModel { OrderIds = orderIds }; var allItems = _itemRepository.Get(itemsFilter); foreach (var order in dbOrders) { var mappedOrder = _mapper.Map <OrderModel>(order); var currentItems = allItems.Where(item => item.OrderId == order.Id).ToList(); var mappedItems = _mapper.Map <List <OrderItemModel> >(currentItems); mappedOrder.CurrentItems = mappedItems; mappedOrder.Total = currentItems.Sum(item => item.SubTotal); orders.Add(mappedOrder); } return(orders); }
public List <OrderItemEntity> Get(OrderItemFilterModel orderItemFilterModel = null) { Expression <Func <OrderItemEntity, bool> > filter = null; if (orderItemFilterModel is not null) { filter = item => !orderItemFilterModel.OrderIds.Any() || orderItemFilterModel.OrderIds.Contains(item.OrderId); } return(base.Get(filter).ToList()); }