示例#1
0
        public async Task <ServiceResponseWithPagination <List <mOrder> > > GetOrderWithFilter(GetOrderFilterDto orderFilter)
        {
            var Queryable = _dbContext.Orders
                            .AsQueryable();

            if (orderFilter.DateOrder != null)
            {
                Queryable = Queryable.Where(x => x.DateOrder.Date == orderFilter.DateOrder.Value);
            }

            if (orderFilter.ItemCount > 0)
            {
                Queryable = Queryable.Where(x => x.ItemCount == orderFilter.ItemCount);
            }

            if (orderFilter.Total > 0)
            {
                Queryable = Queryable.Where(x => x.Total == orderFilter.Total);
            }

            if (orderFilter.Discount > 0)
            {
                Queryable = Queryable.Where(x => x.Discount == orderFilter.Discount);
            }

            if (orderFilter.Net > 0)
            {
                Queryable = Queryable.Where(x => x.Net == orderFilter.Net);
            }

            if (!string.IsNullOrWhiteSpace(orderFilter.OrderNumber))
            {
                Queryable = Queryable.Where(x => x.OrderNumber.Contains(orderFilter.OrderNumber));
            }


            if (orderFilter.Status != null)
            {
                Queryable = Queryable.Where(x => x.Status == orderFilter.Status);
            }


            if (!string.IsNullOrWhiteSpace(orderFilter.OrderingField))
            {
                try
                {
                    Queryable = Queryable.OrderBy($"{orderFilter.OrderingField} {(orderFilter.AscendingOrder ? "ascending" : "descending")}");
                }
                catch
                {
                    return(ResponseResultWithPagination.Failure <List <Models.Order.Order> >($"Could not order by field: {orderFilter.OrderingField}"));
                }

                ;
            }

            var paginationResult = await _httpcontext.HttpContext.InsertPaginationParametersInResponse(Queryable, orderFilter.RecordsPerPage, orderFilter.Page);

            var dto = await Queryable.Paginate(orderFilter).ToListAsync();

            return(ResponseResultWithPagination.Success(dto, paginationResult));
        }
 public async Task <IActionResult> GetOrderWithFilter([FromQuery] GetOrderFilterDto filter)
 {
     return(Ok(await _orderService.GetOrderWithFilter(filter)));
 }