diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index da5c6f07..7e35957b 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -448,12 +448,14 @@ public class UserDao { return authService.validateNewUserToken(token); } - public List getAllUsers(UserEntity user, Long roleId) { + public List getAllUsers(UserEntity user, List roleIds) { List users; - if (roleId != null) { - log.info("Fetching users by role ID: {}", roleId); - RoleEntity roleEntity=roleService.validateRole(roleId); - users = userRepository.findByRoleEntityIdAndHubId(roleEntity.getId(), user.getHub().getId()); + if (roleIds != null) { + log.info("Fetching users by role ID: {}", roleIds); + List roleEntities = roleIds.stream() + .map(roleService::validateRole) // Assuming `validateRole` takes an ID and returns a RoleEntity + .collect(Collectors.toList()); + users = userRepository.findByRoleEntityIdInAndHubId(roleIds, user.getHub().getId()); } else { log.info("Fetching all users"); users = userRepository.findByHubId(user.getHub().getId()); @@ -462,7 +464,7 @@ public class UserDao { .map(this::convertUserEntityToUserResponse) .collect(Collectors.toList()); - log.info("Total users found with role ID {}: {}", roleId, userResponseBeans.size()); + log.info("Total users found with role ID {}: {}", roleIds, userResponseBeans.size()); return userResponseBeans; } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java index 47ab16b8..d9a9577a 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java @@ -16,7 +16,7 @@ public interface UserRepository extends JpaRepository { boolean existsByEmailIgnoreCaseAndHubUniqueUuid(String email, String hubUuid); - List findByRoleEntityIdAndHubId(Long roleId, Long hubId); + List findByRoleEntityIdInAndHubId(List roleIds, Long hubId); List findByHubId(Long hubId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/UserService.java b/src/main/java/net/gepafin/tendermanagement/service/UserService.java index 21109a5e..4808b00e 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/UserService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/UserService.java @@ -45,6 +45,6 @@ public interface UserService { UserEntity getUserByBeneficiaryId(Long beneficiaryId); public UserEntity getUserEntityById(Long userId); - List getAllUsers(HttpServletRequest request, Long roleId); + List getAllUsers(HttpServletRequest request, List roleIds); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java index 9f95b830..c38b2c8c 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java @@ -126,8 +126,8 @@ public class UserServiceImpl implements UserService { } @Override @Transactional(readOnly = true) - public List getAllUsers(HttpServletRequest request, Long roleId) { + public List getAllUsers(HttpServletRequest request, List roleIds) { UserEntity user=validator.validateUser(request); - return userDao.getAllUsers(user, roleId); + return userDao.getAllUsers(user, roleIds); } } \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java index c7b8e530..86122344 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java @@ -234,9 +234,9 @@ public interface UserApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) @RequestMapping(value = "", produces = {"application/json"}, method = RequestMethod.GET) - @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')|| hasRole('ROLE_INSTRUCTOR_MANAGER')") ResponseEntity>> getAllUsers(HttpServletRequest request, - @Parameter( required = false)@RequestParam(value ="roleId", required = false) Long roleId); + @Parameter( required = false)@RequestParam(value ="roleIds", required = false) List roleIds); @RequestMapping("favicon.ico") diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java index 7ff12c2a..22232b57 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java @@ -216,14 +216,14 @@ public class UserApiController implements UserApi { } @Override - public ResponseEntity>> getAllUsers(HttpServletRequest request, Long roleId) { + public ResponseEntity>> getAllUsers(HttpServletRequest request, List roleIds) { - log.info("Get all Users by Role ID - Role ID: {}", roleId); + log.info("Get all Users by Role ID - Role ID: {}", roleIds); /** This code is responsible for creating user action logs for the "Get all users by role" operation. **/ loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_ALL_USERS_BY_ROLE).build()); - List users = userService.getAllUsers(request, roleId); + List users = userService.getAllUsers(request, roleIds); return ResponseEntity.status(HttpStatus.OK).body(new Response<>(users, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_USERS_SUCCESS_MSG))); }