From f15d1659d5fc0a5889f2326146f016080c7abca8 Mon Sep 17 00:00:00 2001 From: Hemmat Date: Mon, 10 Apr 2023 13:38:52 +0200 Subject: [PATCH] #147_verify product name --- .../com/rms/repository/ProductRepository.java | 8 +++---- .../com/rms/rest/handler/ProductHandler.java | 24 +++++++++++-------- .../java/com/rms/service/ProductService.java | 4 ++++ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductRepository.java b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductRepository.java index d2fb4d22..85c4b95a 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductRepository.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductRepository.java @@ -8,6 +8,8 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface ProductRepository extends JpaRepository { @@ -15,8 +17,6 @@ public interface ProductRepository extends JpaRepository { @Query("select p from Product p where p.productCategory.id=:categoryId") Page getByProductCategory(@Param("categoryId") Integer categoryId , Pageable pageable); -// @Query(value = "select p from Product p left join fetch ProductCategory ") -// Page findAll(Pageable pageable); - - + @Query("select p from Product p where p.name=:productName") + Optional findByProductName( @Param("productName") String productName); } diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductHandler.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductHandler.java index 687beba5..a94003b3 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductHandler.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductHandler.java @@ -4,10 +4,7 @@ import com.rms.domain.core.ProductCategory; import com.rms.rest.dto.ProductDto; import com.rms.rest.dto.common.PaginatedResultDto; -import com.rms.rest.exception.ErrorCodes; -import com.rms.rest.exception.ResourceNotFoundException; -import com.rms.rest.exception.ResourceRelatedException; -import com.rms.rest.exception.Response; +import com.rms.rest.exception.*; import com.rms.rest.modelmapper.ProductMapper; import com.rms.rest.modelmapper.common.PaginationMapper; import com.rms.service.ProductCategoryService; @@ -19,6 +16,7 @@ import org.springframework.stereotype.Component; import java.util.List; +import java.util.Optional; @Component @AllArgsConstructor @@ -55,9 +53,13 @@ public ResponseEntity getByProductCategory(Integer catId ,Integer page, Integ } public ResponseEntity save(ProductDto productDto) { + Optional existProductName = productService.getByProductName(productDto.getName()); + if (existProductName.isPresent()) { + throw new ResourceAlreadyExistsException(Product.class.getSimpleName(), "Product Name ", productDto.getName(), ErrorCodes.DUPLICATE_RESOURCE.getCode()); + } + if (productDto.getProductCategoryDto() != null) { - productCategoryService.getById(productDto.getProductCategoryDto().getId()) - .orElseThrow(() -> new ResourceNotFoundException(ProductCategory.class.getSimpleName(), productDto.getProductCategoryDto().getId())); + productCategoryService.getById(productDto.getProductCategoryDto().getId()).orElseThrow(() -> new ResourceNotFoundException(ProductCategory.class.getSimpleName(), productDto.getProductCategoryDto().getId())); } Product product = mapper.toEntity(productDto); productService.save(product); @@ -66,11 +68,13 @@ public ResponseEntity save(ProductDto productDto) { } public ResponseEntity update(ProductDto productDto, Integer id) { - Product product = productService.getById(id) - .orElseThrow(() -> new ResourceNotFoundException(Product.class.getSimpleName(), id)); + Product product = productService.getById(id).orElseThrow(() -> new ResourceNotFoundException(Product.class.getSimpleName(), id)); + Optional existProductName = productService.getByProductName(productDto.getName()); + if (existProductName.isPresent()) { + throw new ResourceAlreadyExistsException(Product.class.getSimpleName(), "Product Name ", productDto.getName(), ErrorCodes.DUPLICATE_RESOURCE.getCode()); + } if (productDto.getProductCategoryDto() != null) { - ProductCategory productCategory = productCategoryService.getById(productDto.getProductCategoryDto().getId()) - .orElseThrow(() -> new ResourceNotFoundException(ProductCategory.class.getSimpleName(), productDto.getProductCategoryDto().getId())); + ProductCategory productCategory = productCategoryService.getById(productDto.getProductCategoryDto().getId()).orElseThrow(() -> new ResourceNotFoundException(ProductCategory.class.getSimpleName(), productDto.getProductCategoryDto().getId())); product.setProductCategory(productCategory); } mapper.updateEntityFromDto(productDto, product); diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductService.java b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductService.java index 9327be1d..63ce62e9 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductService.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductService.java @@ -24,6 +24,10 @@ public Page getAll(Integer page , Integer size) { public Page getByProductCategory(Integer catId ,Integer page , Integer size ) { return productRepository.getByProductCategory(catId ,PageRequest.of(page,size)); } + public Optional getByProductName(String productName) { + return productRepository.findByProductName(productName); + } + public Product save(Product product) { return productRepository.save(product);