예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #3
0
        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());
        }