public async Task <ActionResult <Product> > GetProduct(int productId) { var productSpecification = new ProductWithTypeAndBrandSpecifications(productId); var product = await _productRepo.GetByIdWithSpecifications(productSpecification); if (product == null) { return(NotFound(new ApiResponse(StatusCodes.Status404NotFound))); } var productToReturn = _mapper.Map <ProductToReturnDto>(product); return(Ok(productToReturn)); }
public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductQueryParameters parameters) { var productSpecifications = new ProductWithTypeAndBrandSpecifications(parameters); var numberOfProductsSpecifications = new ProductSpecificationToCountNumberOfProducts(parameters); var products = await _productRepo.GetAllWithSpecifications(productSpecifications); var totalItems = await _productRepo.CountNumberOfProducts(numberOfProductsSpecifications); var productsToReturn = _mapper.Map <IReadOnlyCollection <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(parameters.PageIndex, totalItems, parameters.PageSize, productsToReturn))); }