diff --git a/src/main/java/com/tarento/retail/controller/UserController.java b/src/main/java/com/tarento/retail/controller/UserController.java index 404ccbfa06c7592e354bf9fca27b98c16d77d80d..084976e1804ed9f01f251f982704321feb0f9d6f 100644 --- a/src/main/java/com/tarento/retail/controller/UserController.java +++ b/src/main/java/com/tarento/retail/controller/UserController.java @@ -144,6 +144,11 @@ public class UserController { public String getNumberOfRoles() throws JsonProcessingException { return ResponseGenerator.successResponse(userService.getNumberOfRoles()); } + + @RequestMapping(value = PathRoutes.UserRoutes.NUMBER_OF_USERS_ROLES_GET, method = RequestMethod.GET) + public String getNumberOfUserAndRoles() throws JsonProcessingException { + return ResponseGenerator.successResponse(userService.getNumberOfUsersAndRoles()); + } @RequestMapping(value = PathRoutes.UserRoutes.USER_BY_ID_GET, method = RequestMethod.GET) public String getOne(@RequestParam(value = "id", required = true) Long id, diff --git a/src/main/java/com/tarento/retail/dao/UserDao.java b/src/main/java/com/tarento/retail/dao/UserDao.java index 216f2e6a1e0147c94a5dffe67c0010c586950a57..40fa9a9ee9539d55b198a2f1620ba1cf15de4215 100644 --- a/src/main/java/com/tarento/retail/dao/UserDao.java +++ b/src/main/java/com/tarento/retail/dao/UserDao.java @@ -10,6 +10,7 @@ import com.tarento.retail.dto.UserMasterRoleCountryOrgDto; import com.tarento.retail.dto.UserRoleDto; import com.tarento.retail.model.Action; import com.tarento.retail.model.Country; +import com.tarento.retail.model.KeyValue; import com.tarento.retail.model.SearchRequest; import com.tarento.retail.model.User; import com.tarento.retail.model.UserAuthentication; @@ -254,5 +255,7 @@ public interface UserDao { UserProfile getUserProfile(String username); public UserProfileMapper findAll(SearchRequest searchRequest); + + public List<KeyValue> getNumberOfUsersAndRoles(); } diff --git a/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java b/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java index 11ac9e0fbb2b09490b55cacdb9f46fb2d87b98bf..1d7b0cab2cbd86b116bee9aaa21e28613976ee7d 100644 --- a/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java +++ b/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java @@ -32,6 +32,7 @@ import com.tarento.retail.dto.UserMasterRoleCountryOrgDto; import com.tarento.retail.dto.UserRoleDto; import com.tarento.retail.model.Action; import com.tarento.retail.model.Country; +import com.tarento.retail.model.KeyValue; import com.tarento.retail.model.Role; import com.tarento.retail.model.SearchRequest; import com.tarento.retail.model.User; @@ -961,4 +962,15 @@ public class UserDaoImpl implements UserDao { } return Boolean.TRUE; } + + @Override + public List<KeyValue> getNumberOfUsersAndRoles() { + List<KeyValue> userList = new ArrayList<>(); + try { + userList = jdbcTemplate.query(UserQueries.GET_NUMBER_USER_ROLES, new SqlDataMapper().new UserRoleCountMapper()); + } catch (Exception e) { + LOGGER.error("Encountered an Exception while fetching the User by Username : " + e); + } + return userList; + } } diff --git a/src/main/java/com/tarento/retail/model/KeyValue.java b/src/main/java/com/tarento/retail/model/KeyValue.java new file mode 100644 index 0000000000000000000000000000000000000000..3add5f87935c315ee906097689f0ae4e0b1ff370 --- /dev/null +++ b/src/main/java/com/tarento/retail/model/KeyValue.java @@ -0,0 +1,24 @@ +package com.tarento.retail.model; + +public class KeyValue { + + private String key; + private Object value; + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public Object getValue() { + return value; + } + public void setValue(Object value) { + this.value = value; + } + + + + + +} diff --git a/src/main/java/com/tarento/retail/model/KeyValueList.java b/src/main/java/com/tarento/retail/model/KeyValueList.java new file mode 100644 index 0000000000000000000000000000000000000000..0d835fa6293e8ec0136d35abffd1c64d9b3f951c --- /dev/null +++ b/src/main/java/com/tarento/retail/model/KeyValueList.java @@ -0,0 +1,19 @@ +package com.tarento.retail.model; + +import java.util.List; + +public class KeyValueList { + + private List<KeyValue> keyValues; + + public List<KeyValue> getKeyValues() { + return keyValues; + } + + public void setKeyValues(List<KeyValue> keyValues) { + this.keyValues = keyValues; + } + + + +} diff --git a/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java b/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java index f6b26d5bb69c6699b3ecfcd658bbbfd58044225c..adce2fa982523f2efde78b7073081796a9315481 100644 --- a/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java +++ b/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java @@ -18,6 +18,7 @@ import com.tarento.retail.dto.UserDto; import com.tarento.retail.model.Action; import com.tarento.retail.model.ActionRole; import com.tarento.retail.model.Country; +import com.tarento.retail.model.KeyValue; import com.tarento.retail.model.Role; import com.tarento.retail.model.User; import com.tarento.retail.model.UserAuthentication; @@ -310,6 +311,15 @@ public class SqlDataMapper { return action; } } + + public class UserRoleCountMapper implements RowMapper<KeyValue> { + public KeyValue mapRow(ResultSet rs, int rowNum) throws SQLException { + KeyValue keyValue = new KeyValue(); + keyValue.setKey(rs.getString("roleName")); + keyValue.setValue(rs.getObject("numberOfUsers")); + return keyValue; + } + } public class RoleMapper implements RowMapper<Role> { public Role mapRow(ResultSet rs, int rowNum) throws SQLException { diff --git a/src/main/java/com/tarento/retail/service/UserService.java b/src/main/java/com/tarento/retail/service/UserService.java index 693ab539961c0d61ec1f0c34575f8e3d99bc1bfe..aef7ea5991ba9dfdbd31b64562e5ecdc753f694c 100644 --- a/src/main/java/com/tarento/retail/service/UserService.java +++ b/src/main/java/com/tarento/retail/service/UserService.java @@ -10,12 +10,10 @@ import com.tarento.retail.dto.MasterRoleDto; import com.tarento.retail.dto.UserCountryDto; import com.tarento.retail.dto.UserDto; import com.tarento.retail.dto.UserMasterRoleCountryOrgDto; -import com.tarento.retail.dto.UserMasterRoleDto; import com.tarento.retail.dto.UserRoleDto; import com.tarento.retail.model.Action; import com.tarento.retail.model.Country; -import com.tarento.retail.model.LoginAuthentication; -import com.tarento.retail.model.LoginDto; +import com.tarento.retail.model.KeyValue; import com.tarento.retail.model.Role; import com.tarento.retail.model.SearchRequest; import com.tarento.retail.model.User; @@ -236,5 +234,7 @@ public interface UserService { Boolean validateUserOTP(String username, String otp); public List<UserProfile> findAll(SearchRequest searchRequest); + + List<KeyValue> getNumberOfUsersAndRoles(); } \ No newline at end of file diff --git a/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java b/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java index cba7d19b492b443e4b272a9c8f9bd5919af07cfa..68518347c62ebffa878f04d99e52e0ca0aca44ba 100644 --- a/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java +++ b/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java @@ -38,6 +38,7 @@ import com.tarento.retail.dto.UserMasterRoleCountryOrgDto; import com.tarento.retail.dto.UserRoleDto; import com.tarento.retail.model.Action; import com.tarento.retail.model.Country; +import com.tarento.retail.model.KeyValue; import com.tarento.retail.model.LoginAuthentication; import com.tarento.retail.model.Role; import com.tarento.retail.model.SearchRequest; @@ -590,4 +591,9 @@ public class UserServiceImpl implements UserDetailsService, UserService { return profileList; } + @Override + public List<KeyValue> getNumberOfUsersAndRoles() { + return userDao.getNumberOfUsersAndRoles(); + } + } diff --git a/src/main/java/com/tarento/retail/util/PathRoutes.java b/src/main/java/com/tarento/retail/util/PathRoutes.java index d6a9b81bb38e74aa23fb635675ad7dc55e2a3e86..204f14ed487d0cd223d8adbf4c9790c11e4ed186 100644 --- a/src/main/java/com/tarento/retail/util/PathRoutes.java +++ b/src/main/java/com/tarento/retail/util/PathRoutes.java @@ -38,6 +38,7 @@ public interface PathRoutes { final String GET_USERS_BY_MASTER_ROLE = "getUsersByMasterRole"; final String MAP_USER_MASTER_ROLE_COUNTRY_ORG = "mapUserMasterRoleCountryOrg"; final String REQUEST_OTP = "/requestOTP"; + final String NUMBER_OF_USERS_ROLES_GET = "/getNumberOfUsersAndRoles"; } public interface AuthenticationRoutes { diff --git a/src/main/java/com/tarento/retail/util/Sql.java b/src/main/java/com/tarento/retail/util/Sql.java index d3336962df43a487788db9c3c6f927f55a877765..d8d008db03a7c8cfafab5f1c1a17e5505add51a5 100644 --- a/src/main/java/com/tarento/retail/util/Sql.java +++ b/src/main/java/com/tarento/retail/util/Sql.java @@ -174,6 +174,7 @@ public interface Sql { final String GET_USER_ID = "SELECT id FROM user WHERE username = ? OR email_id = ? OR phone_no = ?"; final String GET_USER_PROFILE = "SELECT user.id, user.username, user.email_id as emailId, user.phone_no as phoneNo, user.avatar_url as avatarUrl, user_profile.first_name, user_profile.last_name, user_profile.dob FROM user LEFT JOIN user_profile on user_profile.user_id = user.id WHERE (user.username = ? or user.email_id = ? ) and is_active is TRUE"; + final String GET_NUMBER_USER_ROLES = "SELECT count(*) as 'numberOfUsers', r.role_name as 'roleName' from user usr LEFT JOIN user_role ur ON usr.id = ur.user_id LEFT JOIN role r ON ur.role_id = r.id where r.id > 2090 group by r.role_name "; } public interface NamedUserQueries {