Example #1
0
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productParams)
        {
            var contSpec   = new ProductWithFilterForCountSpecification(productParams);
            var totalItems = await _productRepo.CountAsync(contSpec);

            var spec     = new ProductsWithTypesAndBrandsSpecification(productParams);
            var products = await _productRepo.ListAsync(spec);

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

            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
        }
        public async Task <ActionResult <Pagination <Product> > > GetProductList(
            [FromQuery] ProductSpecParams productSpecParams)
        {
            var spec      = new ProductWithDetailSpecification(productSpecParams);
            var countSpec = new ProductWithFilterForCountSpecification(productSpecParams);

            var productList = await _productRepository.ListAsync(spec);

            var totalItems = await _productRepository.CountAsync(countSpec);

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

            return(Ok(new Pagination <ProductDto>()
            {
                Count = totalItems,
                PageIndex = productSpecParams.PageIndex,
                PageSize = productSpecParams.PageSize,
                Data = products
            }));
        }
Example #3
0
        public async Task <ActionResult <Pagination <ProductToReturnDTO> > > GetProducts([FromQuery] ProductSpecsParams productParams)
        {
            var spec = new ProductsWithTypesAndBrandsSpecification(productParams);

            var countSpec = new ProductWithFilterForCountSpecification(productParams);

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

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

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

            return(Ok(new Pagination <ProductToReturnDTO>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
            // return products.Select(p => new ProductToReturnDTO()
            // {
            //     Id = p.Id,
            //     Name = p.Name,
            //     Description = p.Description,
            //     Price = p.Price,
            //     PictureUrl = p.PictureUrl,
            //     ProductBrand = p.ProductBrand.Name,
            //     ProductType = p.ProductType.Name
            // }).ToList();
        }