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

            var totalItems = await _productsRepo.CountAsync(countSpec);

            var products = await _productsRepo.ListAsync(spec);

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

            // return products.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();
            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex,
                                                          productParams.PageSize, totalItems, data)));
        }
        public async Task <int> GetTotalItems(ProductSpecParams productParams)
        {
            var countSpec = new ProductsWithFiltersForCountSpecification(productParams);

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

            return(totalItems);
        }
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productParams)
        {
            var spec       = new ProductsWithTypesSpecification(productParams);
            var countSpec  = new ProductsWithFiltersForCountSpecification(productParams);
            var totalItems = await _productsRepo.CountAsync(countSpec);

            var products = await _productsRepo.ListAsync(spec);

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

            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
        }
Exemple #4
0
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productSpecParams)
        {
            var specification = new ProductsWithTypesAndBrandsSpecification(productSpecParams);
            var countSpec     = new ProductsWithFiltersForCountSpecification(productSpecParams);

            var totalRecords = await _productRepo.CountAsync(countSpec);

            var products = await _productRepo.ListAllAsync(specification);

            var dataToReturnDtos       = _mapper.Map <IReadOnlyList <ProductToReturnDto> >(products);
            var dataWithPaginationInfo = new Pagination <ProductToReturnDto>(productSpecParams.PageIndex,
                                                                             productSpecParams.PageSize, totalRecords, dataToReturnDtos);

            return(Ok(dataWithPaginationInfo));
        }
        public async Task <ActionResult <IReadOnlyList <DTOProducts> > > GetProducts(
            [FromQuery] ProductsSpecParams ProductsParams)
        {
            var spec      = new ProductsWithBrandsAndTypesSpecification(ProductsParams);
            var countSpec = new ProductsWithFiltersForCountSpecification(ProductsParams);
            var products  = await _productsRepo.ListWithSpecAsync(spec);

            var totalcount = await _productsRepo.CountAsync(countSpec);

            var data = _mapper.Map <IReadOnlyList <Products>, IReadOnlyList <DTOProducts> >(products);

            if (data == null)
            {
                return(NotFound(new ApiResponse(404)));
            }
            return(Ok(new Pagination <DTOProducts>(ProductsParams.PageSize, ProductsParams.PageIndex, totalcount, data)));
        }
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts(
            [FromQuery] ProductSpecificationParameters parameters)
        {
            var specification      = new ProductsWithTypesAndBrandsSpecification(parameters);
            var countSpecification = new ProductsWithFiltersForCountSpecification(parameters);

            var totalItems = await _productsRepo.CountAsync(countSpecification);

            var products = await _productsRepo.ListAsync(specification);

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

            return(Ok(new Pagination <ProductToReturnDto>(parameters.PageIndex,
                                                          parameters.PageSize,
                                                          totalItems,
                                                          productsToReturn)));
        }
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductsSpecParams prodParams)
        {
            var spec       = new ProductsWithTypesAndBrandsSpecification(prodParams);
            var countSpect = new ProductsWithFiltersForCountSpecification(prodParams);

            var totalItems = await _productRepo.ContAsync(countSpect);

            var Fullproducts = await _productRepo.GetEntityListWithSpecAsync(spec);

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

            return(Ok(new Pagination <ProductToReturnDto> {
                Count = totalItems,
                Data = data,
                PageIndex = prodParams.PageIndex,
                PageSize = prodParams.PageSize
            }));
        }
Exemple #8
0
        public async Task <ActionResult <GenericPagination <ProductDTO> > > GetProducts(
            [FromQuery] ProductSpecificationParams productsParams)
        {
            var productsWithTypesAndBrandsSpec = new ProductsWithTypesAndBrandsSpecification(productsParams);
            var productCountSpec = new ProductsWithFiltersForCountSpecification(productsParams);

            var productsCount = await _productRepo.CountAsync(productCountSpec);

            var products = await _productRepo.GetAllAsync(productsWithTypesAndBrandsSpec);

            var productsDTO = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductDTO> >(products);

            return(Ok(new GenericPagination <ProductDTO>(
                          productsParams.PageIndex,
                          productsParams.PageSize,
                          productsCount,
                          productsDTO)
                      ));
        }
Exemple #9
0
        public async Task <ActionResult <Pagination <IReadOnlyList <ProductDto> > > > GetProductsAsync(
            [FromQuery] ProductSpecParams specParams)
        {
            System.Console.Write(specParams.BrandId);
            System.Console.Write(specParams.TypeId);
            System.Console.Write(specParams.Sort);

            var spec = new ProductsWithTypesAndBrandsSpecification(specParams);

            var countSpec = new ProductsWithFiltersForCountSpecification(specParams);

            var totlaItems = await _productRepository.CountAsync(countSpec);

            var product = await _productRepository.ListAsync(spec);

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

            return(Ok(new Pagination <ProductDto>(specParams.PageIndex, specParams.PageSize, totlaItems, data)));
        }
        public async Task <ActionResult <Pagination <ProductDTO> > > GetProducts(
            [FromQuery] ProductSpecificationParams productParams)
        {
            var spec = new ProductsWithRelatedSpecification(productParams);

            var countSpec = new ProductsWithFiltersForCountSpecification(productParams);

            var totalItems = await _productRepository.CountAsync(countSpec);

            var products = await _productRepository.ListAsync(spec);

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

            return(Ok(new Pagination <ProductDTO>()
            {
                Count = totalItems,
                Data = data,
                PageIndex = productParams.PageIndex,
                PageSize = productParams.PageSize,
            }));
        }
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts(
            [FromQuery] ProductSpecificationParams productParams)
        {
            var specifications = new ProductsWithTypesAndBrandsSpecification(productParams);

            var countSpec = new ProductsWithFiltersForCountSpecification(productParams);

            var totalItems = await _productsRepository.CountAsync(countSpec);

            var products = await _productsRepository.ListAsync(specifications);

            if (products == null)
            {
                return(NotFound(new ApiResponse(404)));
            }

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

            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize,
                                                          totalItems, data)));
        }
Exemple #12
0
        public async Task <IActionResult> GetProducts([FromQuery] ProductSpecParams productParams)
        {
            var spec      = new ProductsWithTypesAndBrandsSpecification(productParams);
            var countSpec = new ProductsWithFiltersForCountSpecification(productParams);

            var products = await _productRepo.ListAsync(spec);

            var totalItems = await _productRepo.CountAsync(countSpec);

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

            var model = new Pagination <ProductToReturnDto>
            {
                Count     = totalItems,
                Data      = data,
                PageIndex = productParams.PageIndex,
                PageSize  = productParams.PageSize
            };

            return(Ok(model));
        }
Exemple #13
0
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams specParams)
        {
            ProductsWithTypesAndBrandsSpecification spec = new ProductsWithTypesAndBrandsSpecification(specParams);

            ProductsWithFiltersForCountSpecification countSpec = new ProductsWithFiltersForCountSpecification(specParams);

            var totalItems = await _productRepo.CountAsync(countSpec);

            IReadOnlyList <Product> products = await _productRepo.ListAsync(spec);

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

            Pagination <ProductToReturnDto> pagination = new Pagination <ProductToReturnDto>
            {
                PageIndex = specParams.PageIndex,
                PageSize  = specParams.PageSize,
                Count     = totalItems,
                Data      = data
            };

            return(Ok(pagination));
        }