public async Task <ActionResult <Pagination <ProductToReturnDto> > > GerProducts(
            [FromQuery] ProductSpecParams productParams)
        {
            var spec = new ProductWithTypesAndBrandsSpecification(productParams);

            var countSpec = new ProductWithFiltersForCountSpecificication(productParams);

            var totalItems = await _productsRepo.CountAsync(countSpec);

            var products = await _productsRepo.ListAsync(spec);

            var data = _mapper
                       .Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products);

            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data)));

            // return product.Select(product => new ProductToReturnDto
            // {
            //    Id = product.Id,
            //    Name = product.Name,
            //    Description = product.Description,
            //    PictureUrl = product.PictureUrl,
            //    Price = product.Price,
            //    ProductBrand = product.ProductBrand.Name,
            //    ProductType = product.ProductType.Name
            // }).ToList();
        }
        public async Task <GetProductsQueryResponse> Handle(GetProductsQueryRequest req, CancellationToken cancellationToken)
        {
            var spec = new ProductsWithTypesAndBrandsSpecification(req.ProductParams);

            var countSpec = new ProductWithFiltersForCountSpecificication(req.ProductParams);

            return(new GetProductsQueryResponse
            {
                Data = await _productsRepo.ListAsync(spec),
                TotalItems = await _productsRepo.CountAsync(countSpec)
            });;
        }
Beispiel #3
0
        public async Task <ActionResult <Pagination <ProductDto> > > GetProducts([FromQuery] SpecParams specParams)
        {
            var spec       = new ProductsWithTypesAndBrandsSpecification(specParams);
            var countSpec  = new ProductWithFiltersForCountSpecificication(specParams);
            var totalItems = await _repository.CountAsync(countSpec);

            var products = await _repository.ListAsync(spec);

            var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductDto> >(products);

            return(Ok(new Pagination <ProductDto>(specParams.PageIndex, specParams.PageSize, totalItems, data)));
        }
        public async Task <IActionResult> GetProducts([FromQuery] ProductSpecParams productSpecParams)
        {
            var spec      = new ProductsWithTypesAndBrandsSpecification(productSpecParams);
            var countSpec = new ProductWithFiltersForCountSpecificication(productSpecParams);
            var totalItem = await _productsRepo.CountAsync(countSpec);

            var products = await _productsRepo.ListAsync(spec);

            var res = _mapper.Map <IReadOnlyList <ProductToReturnDto> >(products);

            return(Ok(new Pagination <ProductToReturnDto>(productSpecParams.PageIndex, productSpecParams.PageSize,
                                                          totalItem, res)));
        }
Beispiel #5
0
        //[Cached(600)]
        public async Task <ActionResult <Pagination <Product> > > GetProducts([FromQuery] ProductSpecParams productSpecParams)
        {
            var spec       = new ProductsWithtypesAndBrandsSpecification(productSpecParams);
            var countSpec  = new ProductWithFiltersForCountSpecificication(productSpecParams);
            var totalItems = await _productRepository.CountAsync(countSpec);

            var products = await _productRepository.ListAsync(spec);

            var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products);

            _logger.LogInformation("Products load");
            return(Ok(new Pagination <ProductToReturnDto>(productSpecParams.PageIndex, productSpecParams.PageSize, totalItems, data)));
        }
Beispiel #6
0
        public async Task <ActionResult <IReadOnlyList <ProductModel> > > GetProducts([FromQuery] ProductSpecParams productParams)
        {
            //var products = await this.repository.GetProductsAsync();
            var spec      = new ProductsWithTypeAndBrandSpecification(productParams);
            var countSpec = new ProductWithFiltersForCountSpecificication(productParams);

            var totalItems = await this.productRepo.CountAsync(countSpec);

            var products = await this.productRepo.ListAsync(spec);

            var data = mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductModel> >(products);

            return(Ok(new Pagination <ProductModel>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
        }