コード例 #1
0
 public async Task <IActionResult> StockCardFilter([FromQuery] StockCardFilterDto filter)
 {
     return(Ok(await _stockservice.StockCardFilter(filter)));
 }
コード例 #2
0
        public async Task <ServiceResponseWithPagination <List <StockCardDto> > > StockCardFilter(StockCardFilterDto filter)
        {
            var queryable = _dbContext.StockCards.Include(x => x.User).Include(x => x.Product).ThenInclude(x => x.ProductGroup).AsQueryable();

            //var queryable = _dbContext.StockCards.AsQueryable();
            //Filter
            if (!string.IsNullOrWhiteSpace(filter.Name) && filter.Name != "")
            {
                queryable = queryable.Where(x => x.Product.Name.Contains(filter.Name));
            }
            if (filter.IsActive != null)
            {
                queryable = queryable.Where(x => x.IsActive.Equals(filter.IsActive));
            }
            //Ordering
            if (!string.IsNullOrWhiteSpace(filter.OrderingField))
            {
                try
                {
                    queryable = queryable.OrderBy($"{filter.OrderingField} {(filter.AscendingOrder ? "ascending" : "descending")}");
                }
                catch
                {
                    return(ResponseResultWithPagination.Failure <List <StockCardDto> >($"Could not order by field: {filter.OrderingField}"));
                }
            }
            var paginationResult = await _httpContext.HttpContext
                                   .InsertPaginationParametersInResponse(queryable, filter.RecordsPerPage, filter.Page);

            var StockCard = await queryable.Paginate(filter).ToListAsync();

            var dto = _mapper.Map <List <StockCardDto> >(StockCard);

            return(ResponseResultWithPagination.Success(dto, paginationResult));
        }