public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts( [FromQuery] ProductSpecParams productParams) { var spec = new ProductsWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductsWithFiltersForCountSpecification(productParams); var totalItems = await _productsRepo.CountAsync(countSpec); var products = await _productsRepo.ListAsync(spec); var data = _mapper .Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); // 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(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
public async Task <int> GetTotalItems(ProductSpecParams productParams) { var countSpec = new ProductsWithFiltersForCountSpecification(productParams); var totalItems = await _unitOfWork.Repository <Product>().Count(countSpec); return(totalItems); }
public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productParams) { var spec = new ProductsWithTypesSpecification(productParams); var countSpec = new ProductsWithFiltersForCountSpecification(productParams); var totalItems = await _productsRepo.CountAsync(countSpec); var products = await _productsRepo.ListAsync(spec); var data = _mapper.Map <IReadOnlyList <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productSpecParams) { var specification = new ProductsWithTypesAndBrandsSpecification(productSpecParams); var countSpec = new ProductsWithFiltersForCountSpecification(productSpecParams); var totalRecords = await _productRepo.CountAsync(countSpec); var products = await _productRepo.ListAllAsync(specification); var dataToReturnDtos = _mapper.Map <IReadOnlyList <ProductToReturnDto> >(products); var dataWithPaginationInfo = new Pagination <ProductToReturnDto>(productSpecParams.PageIndex, productSpecParams.PageSize, totalRecords, dataToReturnDtos); return(Ok(dataWithPaginationInfo)); }
public async Task <ActionResult <IReadOnlyList <DTOProducts> > > GetProducts( [FromQuery] ProductsSpecParams ProductsParams) { var spec = new ProductsWithBrandsAndTypesSpecification(ProductsParams); var countSpec = new ProductsWithFiltersForCountSpecification(ProductsParams); var products = await _productsRepo.ListWithSpecAsync(spec); var totalcount = await _productsRepo.CountAsync(countSpec); var data = _mapper.Map <IReadOnlyList <Products>, IReadOnlyList <DTOProducts> >(products); if (data == null) { return(NotFound(new ApiResponse(404))); } return(Ok(new Pagination <DTOProducts>(ProductsParams.PageSize, ProductsParams.PageIndex, totalcount, data))); }
public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts( [FromQuery] ProductSpecificationParameters parameters) { var specification = new ProductsWithTypesAndBrandsSpecification(parameters); var countSpecification = new ProductsWithFiltersForCountSpecification(parameters); var totalItems = await _productsRepo.CountAsync(countSpecification); var products = await _productsRepo.ListAsync(specification); var productsToReturn = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(parameters.PageIndex, parameters.PageSize, totalItems, productsToReturn))); }
public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductsSpecParams prodParams) { var spec = new ProductsWithTypesAndBrandsSpecification(prodParams); var countSpect = new ProductsWithFiltersForCountSpecification(prodParams); var totalItems = await _productRepo.ContAsync(countSpect); var Fullproducts = await _productRepo.GetEntityListWithSpecAsync(spec); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(Fullproducts); return(Ok(new Pagination <ProductToReturnDto> { Count = totalItems, Data = data, PageIndex = prodParams.PageIndex, PageSize = prodParams.PageSize })); }
public async Task <ActionResult <GenericPagination <ProductDTO> > > GetProducts( [FromQuery] ProductSpecificationParams productsParams) { var productsWithTypesAndBrandsSpec = new ProductsWithTypesAndBrandsSpecification(productsParams); var productCountSpec = new ProductsWithFiltersForCountSpecification(productsParams); var productsCount = await _productRepo.CountAsync(productCountSpec); var products = await _productRepo.GetAllAsync(productsWithTypesAndBrandsSpec); var productsDTO = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductDTO> >(products); return(Ok(new GenericPagination <ProductDTO>( productsParams.PageIndex, productsParams.PageSize, productsCount, productsDTO) )); }
public async Task <ActionResult <Pagination <IReadOnlyList <ProductDto> > > > GetProductsAsync( [FromQuery] ProductSpecParams specParams) { System.Console.Write(specParams.BrandId); System.Console.Write(specParams.TypeId); System.Console.Write(specParams.Sort); var spec = new ProductsWithTypesAndBrandsSpecification(specParams); var countSpec = new ProductsWithFiltersForCountSpecification(specParams); var totlaItems = await _productRepository.CountAsync(countSpec); var product = await _productRepository.ListAsync(spec); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductDto> >(product); return(Ok(new Pagination <ProductDto>(specParams.PageIndex, specParams.PageSize, totlaItems, data))); }
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, })); }
public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts( [FromQuery] ProductSpecificationParams productParams) { var specifications = new ProductsWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductsWithFiltersForCountSpecification(productParams); var totalItems = await _productsRepository.CountAsync(countSpec); var products = await _productsRepository.ListAsync(specifications); if (products == null) { return(NotFound(new ApiResponse(404))); } var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
public async Task <IActionResult> GetProducts([FromQuery] ProductSpecParams productParams) { var spec = new ProductsWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductsWithFiltersForCountSpecification(productParams); var products = await _productRepo.ListAsync(spec); var totalItems = await _productRepo.CountAsync(countSpec); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); var model = new Pagination <ProductToReturnDto> { Count = totalItems, Data = data, PageIndex = productParams.PageIndex, PageSize = productParams.PageSize }; return(Ok(model)); }
public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams specParams) { ProductsWithTypesAndBrandsSpecification spec = new ProductsWithTypesAndBrandsSpecification(specParams); ProductsWithFiltersForCountSpecification countSpec = new ProductsWithFiltersForCountSpecification(specParams); var totalItems = await _productRepo.CountAsync(countSpec); IReadOnlyList <Product> products = await _productRepo.ListAsync(spec); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); Pagination <ProductToReturnDto> pagination = new Pagination <ProductToReturnDto> { PageIndex = specParams.PageIndex, PageSize = specParams.PageSize, Count = totalItems, Data = data }; return(Ok(pagination)); }