public async Task <ActionResult <IReadOnlyList <Product> > > GetAllProducts()
        {
            // var products = await _productsRepo.ListAllAsync();
            // return Ok(products);
            var spec     = new ProductsWithTypesAndBrandsSpec();
            var products = await _productsRepo.ListAsyncWithSpec(spec);

            return
                (Ok(_mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductResponseDto> >(products)));
        }
        public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id)
        {
            var spec = new ProductsWithTypesAndBrandsSpec(id);

            var product = await _productRepo.GetEntityWithSpec(spec);

            var productToReturn = _mapper.Map <Product, ProductToReturnDto>(product);

            return(Ok(productToReturn));
        }
        public async Task <ActionResult <IReadOnlyList <ProductToReturnDto> > > GetProducts()
        {
            var spec = new ProductsWithTypesAndBrandsSpec();

            var products = await _productRepo.ListAsync(spec);

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

            return(Ok(_mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products)));
        }
        public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id)
        {
            var spec    = new ProductsWithTypesAndBrandsSpec(id);
            var product = await _productsRepo.GetEntityWithSpec(spec);

            if (product == null)
            {
                return(NotFound(new ApiResponse(404)));
            }
            return(_mapper.Map <Product, ProductToReturnDto> (product));
        }
        public async Task <ActionResult <ProductDTO> > GetProduct(int id)
        {
            var spec = new ProductsWithTypesAndBrandsSpec(id);
            var data = await productRepo.GetEntityBySpec(spec);

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

            return(mapper.Map <Product, ProductDTO>(data));
        }
        public async Task <ActionResult <Pagination <ProductDTO> > > GetProducts([FromQuery] ProductSpecParams productParams)
        {
            var spec       = new ProductsWithTypesAndBrandsSpec(productParams);
            var countSpec  = new ProductWithFiltersForCountSpec(productParams);
            var totalItems = await productRepo.CountAsync(countSpec);

            var products = await productRepo.GetAllListAsync(spec);

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

            return(Ok(new Pagination <ProductDTO>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
        }
Beispiel #7
0
        public async Task <ActionResult <Product> > GetProduct(int productId)
        {
            var spec    = new ProductsWithTypesAndBrandsSpec(productId);
            var product = await _productRepo.GetEntityWithSpec(spec);

            if (product == null)
            {
                // 404: Not Found
                return(NotFound(new ApiResponse(404)));
            }
            return(Ok(_mapper.Map <ReturnProductDto>(product)));
        }
Beispiel #8
0
        public async Task <ActionResult <Pagination <ReturnProductDto> > > GetProducts([FromQuery] ProductSpecParams productSpecParams)
        {
            var spec      = new ProductsWithTypesAndBrandsSpec(productSpecParams);
            var countSpec = new ProductFiltersWithCountSpecification(productSpecParams);

            var totalItems = await _productRepo.CountAsync(countSpec);

            var products = await _productRepo.ListAsync(spec);

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

            return(Ok(new Pagination <ReturnProductDto>(productSpecParams.PageIndex, productSpecParams.PageSize, totalItems, data)));
        }
        public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id)
        {
            var     spec            = new ProductsWithTypesAndBrandsSpec(id);
            Product productFromRepo = await _productRep.GetBySpecAsync(spec);

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

            var productToReturn = _mapper.Map <ProductToReturnDto>(productFromRepo);


            return(Ok(productToReturn));
        }
        public async Task <ActionResult <Product> > GetProductById(int id)
        {
            // var product = await _productsRepo.GetByIdAsync(id);
            // if (product != null)
            //     return Ok(product);

            // return NotFound();
            var spec    = new ProductsWithTypesAndBrandsSpec(id);
            var product = await _productsRepo.GetEntityWithSpec(spec);

            if (product != null)
            {
                return(Ok(_mapper.Map <Product, ProductResponseDto>(product)));
            }

            return(NotFound());
        }
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productParams)
        {
            var countSpec        = new ProductsSpecForCount(productParams);
            var totalItemsInRepo = await _productRep.CountAsync(countSpec);

            var spec = new ProductsWithTypesAndBrandsSpec(productParams);
            IReadOnlyList <Product> productsFromRepo = await _productRep.ListBySpecAsync(spec);

            var dataToReturn = _mapper.Map <IReadOnlyList <ProductToReturnDto> >(productsFromRepo);

            return(Ok(new Pagination <ProductToReturnDto>
                      (
                          dataToReturn,
                          totalItemsInRepo,
                          productParams.PageSize,
                          productParams.PageIndex
                      )));
        }