From 89ccb4eba47d227b36cd6f57cc61b8cd9db661f7 Mon Sep 17 00:00:00 2001 From: kabi239 Date: Sat, 21 Dec 2024 00:51:38 +0530 Subject: [PATCH] Modification done in Product Model --- .../sb_ecom/Repository/ProductRepository.java | 6 ++-- .../sb_ecom/service/ProductServiceImpl.java | 29 +++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/ecommerce/sb_ecom/Repository/ProductRepository.java b/src/main/java/com/ecommerce/sb_ecom/Repository/ProductRepository.java index f81b327..e56ad71 100644 --- a/src/main/java/com/ecommerce/sb_ecom/Repository/ProductRepository.java +++ b/src/main/java/com/ecommerce/sb_ecom/Repository/ProductRepository.java @@ -2,6 +2,8 @@ import com.ecommerce.sb_ecom.model.Category; import com.ecommerce.sb_ecom.model.Product; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,7 +11,7 @@ @Repository public interface ProductRepository extends JpaRepository { - List findByCategoryOrderByPriceAsc(Category category); + Page findByCategoryOrderByPriceAsc(Category category, Pageable pageDetails); - List findByProductNameLikeIgnoreCase(String keyword); + Page findByProductNameLikeIgnoreCase(String keyword, Pageable pageDetails); } diff --git a/src/main/java/com/ecommerce/sb_ecom/service/ProductServiceImpl.java b/src/main/java/com/ecommerce/sb_ecom/service/ProductServiceImpl.java index f114723..ddec8d2 100644 --- a/src/main/java/com/ecommerce/sb_ecom/service/ProductServiceImpl.java +++ b/src/main/java/com/ecommerce/sb_ecom/service/ProductServiceImpl.java @@ -69,7 +69,7 @@ public ProductResponse getAllProducts(Integer pageNumber, Integer pageSize, Stri Pageable pageDetails = PageRequest.of(pageNumber, pageSize, sortByAndOrder); Page productPage = productRepository.findAll(pageDetails); - List products=productRepository.findAll(); + List products=productPage.getContent(); List productDTOS= products.stream().map(product -> modelMapper.map(product,ProductDTO.class)).toList(); if(products.isEmpty()){ @@ -91,14 +91,18 @@ public ProductResponse getAllProducts(Integer pageNumber, Integer pageSize, Stri public ProductResponse searchByCatagory(Long categoryId, Integer pageNumber, Integer pageSize, String sortBy, String sortOrder) { Category category = categoryRepository.findById(categoryId).orElseThrow( () -> new ResourceNotFoundException("Category","categoryId",categoryId)); - List products = productRepository.findByCategoryOrderByPriceAsc(category); - List productDTOS= products.stream().map( - product ->modelMapper.map(product,ProductDTO.class)).toList(); - Sort sortByAndOrder = sortOrder.equalsIgnoreCase("asc")? Sort.by(sortBy).ascending():Sort.by(sortBy).descending(); Pageable pageDetails = PageRequest.of(pageNumber, pageSize, sortByAndOrder); - Page productPage = productRepository.findAll(pageDetails); + Page productPage = productRepository.findByCategoryOrderByPriceAsc(category,pageDetails); + + List products = productPage.getContent(); + List productDTOS= products.stream().map( + product ->modelMapper.map(product,ProductDTO.class)).toList(); + + if(products.size()==0){ + throw new APIException("This category does not have any products"); + } ProductResponse productResponse = new ProductResponse(); productResponse.setProducts(productDTOS); @@ -112,15 +116,16 @@ public ProductResponse searchByCatagory(Long categoryId, Integer pageNumber, Int @Override public ProductResponse searchProductByKeyword(String keyword, Integer pageNumber, Integer pageSize, String sortBy, String sortOrder) { - List products = productRepository.findByProductNameLikeIgnoreCase('%'+keyword+'%'); - List productDTOS = products.stream().map(product -> - modelMapper.map(product,ProductDTO.class)).toList(); Sort sortByAndOrder = sortOrder.equalsIgnoreCase("asc")? Sort.by(sortBy).ascending():Sort.by(sortBy).descending(); Pageable pageDetails = PageRequest.of(pageNumber, pageSize, sortByAndOrder); - Page productPage = productRepository.findAll(pageDetails); - - + Page productPage = productRepository.findByProductNameLikeIgnoreCase('%'+keyword+'%',pageDetails); + List products = productPage.getContent(); + List productDTOS = products.stream().map(product -> + modelMapper.map(product,ProductDTO.class)).toList(); + if(products.size()==0){ + throw new APIException("No products found with keyword: "+ keyword); + } ProductResponse productResponse = new ProductResponse(); productResponse.setProducts(productDTOS);