private IQueryable <Domain.Aggregates.Product> BuildQuery(ProductsByFilter request)
        {
            var query = _dbContext.Products.AsNoTracking()
                        .Skip(request.Offset)
                        .Take(request.Limit);

            if (!string.IsNullOrWhiteSpace(request.Search))
            {
                query = query.Where(x => x.Code.Contains(request.Search) || x.Name.Contains(request.Search));
            }

            return(query);
        }
        protected override async Task <IEnumerable <Product> > HandleCore(ProductsByFilter request)
        {
            var query = BuildQuery(request);

            var result = query.Select(p => new Product
            {
                Image         = p.Image,
                Code          = p.Code,
                Name          = p.Name,
                Id            = p.Id,
                Price         = p.Price,
                PriceApproved = p.PriceApproved,
                LastUpdated   = p.LastUpdated
            }).ToList();

            return(result);
        }
        public async Task <IActionResult> Get([FromQuery] ProductsByFilter query)
        {
            var result = await _queryProductsByFilter.Handle(query);

            return(Ok(result));
        }