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))); }