public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts( // string sort, int? brandId, int? typeId) [FromQuery] ProductSpecParams productParams) { // var products = await _productsRepo.ListAllAsync(); // var spec = new ProductsWithTypesAndBrandsSpecification(sort, brandId, typeId); var spec = new ProductsWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductWithFilterCountSpecification(productParams); var totalItems = await _productsRepo.CountAsync(countSpec); var products = await _productsRepo.ListAsync(spec); // This can also be done in specifaction section // 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(_mapper.Map<IReadOnlyList<Product>, IReadOnlyList<ProductToReturnDto>>(products)); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
public async Task <ActionResult <Pagination <ProductDTO> > > GetProducts([FromQuery] ProductSpecParam ProductParams) { var spec = new ProductswithBrandsAndTypes(ProductParams); var CountSpec = new ProductWithFilterCountSpecification(ProductParams); var totalItems = _productRepo.CountAsync(CountSpec); var products = await _productRepo.ListAsync(spec); var Data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductDTO> >(products); return(Ok(new Pagination <ProductDTO>(ProductParams.pageSize, ProductParams.pageIndex, totalItems.Result, Data))); }
public async Task <IActionResult> GetProducts( [FromQuery] ProductSpecParam productSpecParam) { var spec = new ProductsWithTypesAndBrandsSpecification(productSpecParam); var countSpec = new ProductWithFilterCountSpecification(productSpecParam); var products = await _productRepository.ListAsync(spec); var totalItems = await _productRepository.CountAsync(countSpec); var mapData = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductDto> >(products); return(OkWithPagination(productSpecParam.PageIndex, productSpecParam.PageSize, totalItems, mapData)); //return Ok(new Pagination<ProductDto>(productSpecParam.PageIndex, productSpecParam.PageSize, totalItems, mapData)); }