public async Task <ActionResult <ProductViewModel> > GetProduct(int id) { var includeBrandsAndTypesQuery = new ProductsIncludingTypesAndBrands(id); var product = await _unitOfWork.Service <Product>().GetOneWithSpecification(includeBrandsAndTypesQuery); if (product == null) { return(NotFound(new APIResponse(StatusCodes.Status404NotFound))); } return(_mapper.Map <Product, ProductViewModel>(product)); }
public async Task <ActionResult <Pagination <ProductViewModel> > > GetProducts([FromQuery] ProductSearchParameters productSearchParameters) { var includeBrandsAndTypesQuery = new ProductsIncludingTypesAndBrands(productSearchParameters); var countParameters = new CountedProducts(productSearchParameters); var totalItems = await _unitOfWork.Service <Product>().CountAsync(countParameters); var products = await _unitOfWork.Service <Product>().ListAllWithSpecificationAsync(includeBrandsAndTypesQuery); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductViewModel> >(products); return(Ok(new Pagination <ProductViewModel>( productSearchParameters.PageIndex, productSearchParameters.PageSize, totalItems, data ))); }