public async Task <ActionResult <ProductDTO> > GetProduct(int id) { var spec = new ProductsWithRelatedSpecification(id); var product = await _productRepository.GetEntityWithSpec(spec); if (product == null) { return(NotFound(new ApiResponse((int)HttpStatusCode.NotFound))); } return(Ok(_mapper.Map <Product, ProductDTO>(product))); }
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, })); }