private IQueryable <Order> FilterOrders(OrdersFilterInputModel input, IQueryable <Order> orders) { if (input.PaymentStatus != null) { orders = orders.Where(x => x.PaymentStatus == input.PaymentStatus); } if (input.ShippingStatus != null) { orders = orders.Where(x => x.ShippingStatus == input.ShippingStatus); } if (input.WarehouseId != null && input.WarehouseId != 0) { orders = orders.Where(x => x.WarehouseId == input.WarehouseId); } if (input.OrderStatus != null) { orders = orders.Where(x => x.OrderStatus == input.OrderStatus); } if (!string.IsNullOrEmpty(input.SKU)) { orders = orders.Where(x => x.OrderItems.Any(oi => oi.ProductId.ToString() == input.SKU || oi.Product.SKU == input.SKU)); } if (!string.IsNullOrEmpty(input.CustomerEmail)) { orders = orders.Where(x => x.Customer.Email == input.CustomerEmail); } return(orders); }
public IActionResult ManageOrders(OrdersFilterInputModel input) { var model = new ManageOrdersViewModel() { Page = input.Page, Filters = input, Orders = this.ordersService.GetAllOrders <OrdersViewModel>(input), PagesCount = (int)Math.Ceiling((double)this.ordersService.GetAllOrdersCount() / GlobalConstants.PageSize), }; return(this.View(model)); }
public IEnumerable <T> GetAllOrders <T>(OrdersFilterInputModel input) { var orders = this.context.Orders.Where(x => x.IsDeleted == false); var filteredList = this.FilterOrders(input, orders); filteredList = filteredList.OrderByDescending(x => x.Id); return(filteredList .Skip((input.Page - 1) * GlobalConstants.PageSize) .Take(GlobalConstants.PageSize) .To <T>() .ToList()); }