diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/model/User.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/model/User.java index 2402c6a..fe05a5a 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/model/User.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/model/User.java @@ -2,9 +2,7 @@ package com.mfsys.aconnect.usermanagement.model; import com.mfsys.common.configuration.constant.FieldNameLength; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; @@ -15,6 +13,8 @@ import java.util.Set; @Entity(name = "users") @Table(name = "users") @Data +@Getter +@Setter @NoArgsConstructor @AllArgsConstructor public class User { @@ -48,6 +48,9 @@ public class User { @Column(name = "is_active", columnDefinition = FieldNameLength.BOOLEAN_BIT) private boolean isActive = true; + @Column(name = "is_deleted", columnDefinition = FieldNameLength.BOOLEAN_BIT) + private boolean isDeleted = false; + @CreationTimestamp @Column(name = "created_at", updatable = false) private LocalDateTime createdAt; diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java index b04fa1d..0738696 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java @@ -4,6 +4,7 @@ import com.mfsys.aconnect.usermanagement.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository @@ -11,4 +12,6 @@ public interface UserRepository extends JpaRepository { Optional findByUserIdAndIsActiveTrue(String userId); boolean existsByUserId(String userId); boolean existsByEmail(String email); + List findByIsDeletedFalse(); + Optional findByUserIdAndIsDeletedFalse(String userId); } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java index af24613..af6efe2 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java @@ -5,6 +5,7 @@ import com.mfsys.aconnect.security.dto.ResetPasswordDTO; import com.mfsys.aconnect.usermanagement.exceptions.EmailAlreadyExistException; import com.mfsys.aconnect.usermanagement.exceptions.OldPasswordNotMatch; import com.mfsys.aconnect.usermanagement.exceptions.UsernameAlreadyExistException; +import com.mfsys.aconnect.usermanagement.model.Role; import com.mfsys.common.configuration.service.PasswordEncryptionService; import com.mfsys.aconnect.usermanagement.dto.UserDTOs; import com.mfsys.aconnect.usermanagement.model.User; @@ -70,11 +71,12 @@ public class UserService { return "Password changed successfully"; } - public List getAllUsers() { - return userRepository.findAll().stream() - .map(this::mapToResponseDTO) - .collect(Collectors.toList()); - } + public List getAllUsers() { + return userRepository.findAll().stream() + .filter(user -> user.getRole() != Role.ADMIN) + .map(this::mapToResponseDTO) + .collect(Collectors.toList()); + } public UserDTOs.UserResponse getUserById(String userId) { User user = userRepository.findById(userId) @@ -96,10 +98,10 @@ public class UserService { @Transactional public void deleteUser(String userId) { - if (!userRepository.existsById(userId)) { - throw new EntityNotFoundException("User not found with ID: " + userId); - } - userRepository.deleteById(userId); + User user = userRepository.findById(userId).orElseThrow(); + user.setDeleted(true); + user.setActive(false); + userRepository.save(user); }