From 4e7bee3180321cc42920104c08baf31ff1fdf789 Mon Sep 17 00:00:00 2001 From: Hams-Mohamed Date: Mon, 10 Apr 2023 15:23:26 +0200 Subject: [PATCH] #148 prevent product category from repeating --- .../repository/ProductCategoryRepository.java | 6 ++++++ .../rest/handler/ProductCategoryHandler.java | 21 +++++++++++++++---- .../rms/service/ProductCategoryService.java | 5 +++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductCategoryRepository.java b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductCategoryRepository.java index 7bba5cf8..e7ece783 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductCategoryRepository.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProductCategoryRepository.java @@ -2,8 +2,14 @@ import com.rms.domain.core.ProductCategory; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface ProductCategoryRepository extends JpaRepository { + @Query(value = "select pc from ProductCategory pc where pc.name= :name" ) + Optional findByName(@Param("name")String name); } diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductCategoryHandler.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductCategoryHandler.java index 3573ef48..2d76691d 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductCategoryHandler.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProductCategoryHandler.java @@ -4,10 +4,7 @@ import com.rms.domain.investor.Transaction; import com.rms.rest.dto.ProductCategoryDto; 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.ProductCategoryMapper; import com.rms.rest.modelmapper.common.PaginationMapper; import com.rms.service.ProductCategoryService; @@ -18,6 +15,7 @@ import org.springframework.stereotype.Component; import java.util.List; +import java.util.Optional; @Component @AllArgsConstructor @@ -43,6 +41,14 @@ public ResponseEntity getById(Integer id) { } public ResponseEntity save(ProductCategoryDto productCategoryDto) { + OptionalproductCategoryexist=productCategoryService.findByName(productCategoryDto.getName()); + + if(productCategoryexist.isPresent()) + { + + throw new ResourceAlreadyExistsException(ProductCategory.class.getSimpleName(), + "product category name",productCategoryDto.getName(),ErrorCodes.DUPLICATE_RESOURCE.getCode()); + } ProductCategory productCategory = mapper.toEntity(productCategoryDto); productCategoryService.save(productCategory); ProductCategoryDto dto = mapper.toDto(productCategory); @@ -50,9 +56,16 @@ public ResponseEntity save(ProductCategoryDto productCategor } public ResponseEntity update(ProductCategoryDto productCategoryDto, Integer id) { + OptionalproductCategoryexist=productCategoryService.findByName(productCategoryDto.getName()); + if(productCategoryexist.isPresent()&&!productCategoryexist.get().getId().equals(id)) + { + throw new ResourceAlreadyExistsException(ProductCategory.class.getSimpleName(), + "product category name",productCategoryDto.getName(),ErrorCodes.DUPLICATE_RESOURCE.getCode()); + } ProductCategory productCategory = productCategoryService.getById(id) .orElseThrow(() -> new ResourceNotFoundException(ProductCategory.class.getSimpleName(), id)); mapper.updateEntityFromDto(productCategoryDto, productCategory); + productCategory.setId(id); productCategoryService.save(productCategory); ProductCategoryDto dto = mapper.toDto(productCategory); return ResponseEntity.ok(dto); diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductCategoryService.java b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductCategoryService.java index 3eb3e892..2e72ce5f 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductCategoryService.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProductCategoryService.java @@ -23,6 +23,11 @@ public Optional getById(Integer id) { return productCategoryRepository.findById(id); } + public OptionalfindByName(String name) + { + return productCategoryRepository.findByName(name); + } + public ProductCategory save(ProductCategory category) { return productCategoryRepository.save(category); }