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

            var countSpec = new ProductsWithFilterForCountSpecification(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));



            var totalItems = await _unitOfWork.Repository <Product>().CountAsync(countSpec);

            var products = await _unitOfWork.Repository <Product>().ListAsync(spec);

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

            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
        }
示例#2
0
        //action result that returns an http response
        // 200 request
        //synchranous request
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts(
            [FromQuery] ProductSpecParams productParams)
        {
            //ToList is gonna execute a select query on our database and put em in products

            /*
             * However the query could take long so we would like to do
             * things in the meantime...
             *
             * So you can use your buddy javascript to make it asyncronous
             */

            var spec = new ProductsWithTypesAndBrandsSpecification(productParams);

            var countSpec = new ProductsWithFilterForCountSpecification(productParams);

            var totalItems = await _productsRepo.CountAsync(countSpec);



            var products = await _productsRepo.ListAsync(spec);

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

            //strange syntax...
            return(Ok(new Pagination <ProductToReturnDto>(
                          productParams.PageIndex,
                          productParams.PageSize,
                          totalItems,
                          data
                          )));
        }
示例#3
0
        public async Task <ActionResult <Pagination <ProductToReturnDTO> > > GetProducts(string sort,
                                                                                         [FromQuery] ProductSpecParams productParams)
        {
            var spec = new ProductsWithTypesAndBrandsSpecification(productParams);

            var countSpec = new ProductsWithFilterForCountSpecification(productParams);

            var totalItems = await _repoProducts.CountAsync(countSpec);

            var products = await _repoProducts.ListAsync(spec);

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

            // return Ok(products);
            // return products.Select(product => new ProductToReturnDTO
            //  {
            //    Id = product.Id,
            //    Name = product.Name,
            //    Description = product.Description,
            //    Price = product.Price,
            //    PictureUrl = product.PictureUrl,
            //    ProductType  = product.ProductType.Name,
            //    ProductBrand  = product.ProductBrand.Name
            //  }).ToList();

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