public async Task <ActionResult <Pagination <List <ProductToReturnDto> > > > GetProducts([FromQuery] ProductSpecParams productParams) { var spec = new ProductWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductsWithFilterForCountSpecification(productParams); // var totalItems=await _productsRepo.CountAsync(countSpec); // var products = await _productsRepo.ListAsync(spec); // var data=_mapper.Map<IReadOnlyList<Product>,IReadOnlyList<ProductToReturnDto>>(products); // return Ok( new Pagination<ProductToReturnDto>(productParams.PageIndex,productParams.PageSize,totalItems,data)); var totalItems = await _unitOfWork.Repository <Product>().CountAsync(countSpec); var products = await _unitOfWork.Repository <Product>().ListAsync(spec); var data = _mapper .Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
//action result that returns an http response // 200 request //synchranous request public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts( [FromQuery] ProductSpecParams productParams) { //ToList is gonna execute a select query on our database and put em in products /* * However the query could take long so we would like to do * things in the meantime... * * So you can use your buddy javascript to make it asyncronous */ var spec = new ProductsWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductsWithFilterForCountSpecification(productParams); var totalItems = await _productsRepo.CountAsync(countSpec); var products = await _productsRepo.ListAsync(spec); var data = _mapper. Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); //strange syntax... return(Ok(new Pagination <ProductToReturnDto>( productParams.PageIndex, productParams.PageSize, totalItems, data ))); }
public async Task <ActionResult <Pagination <ProductToReturnDTO> > > GetProducts(string sort, [FromQuery] ProductSpecParams productParams) { var spec = new ProductsWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductsWithFilterForCountSpecification(productParams); var totalItems = await _repoProducts.CountAsync(countSpec); var products = await _repoProducts.ListAsync(spec); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDTO> >(products); // return Ok(products); // return products.Select(product => new ProductToReturnDTO // { // Id = product.Id, // Name = product.Name, // Description = product.Description, // Price = product.Price, // PictureUrl = product.PictureUrl, // ProductType = product.ProductType.Name, // ProductBrand = product.ProductBrand.Name // }).ToList(); return(Ok(new Pagination <ProductToReturnDTO>( productParams.PageIndex, productParams.PageSize, totalItems, data ))); }