From debfd23aff87c1e9d9d2f1c21abcf4aa02832f62 Mon Sep 17 00:00:00 2001
From: sarojsingh2021 <saroj.kumarsingh@tarento.com>
Date: Wed, 4 Jan 2023 17:29:04 +0530
Subject: [PATCH] fix requestOTP

---
 .../retail/controller/UserController.java     | 51 +++++++++++--------
 .../tarento/retail/dao/impl/UserDaoImpl.java  |  1 +
 .../java/com/tarento/retail/model/User.java   |  3 +-
 .../retail/model/mapper/SqlDataMapper.java    |  2 +
 .../tarento/retail/service/UserService.java   |  2 +
 .../retail/service/impl/UserServiceImpl.java  |  6 +++
 .../com/tarento/retail/util/Constants.java    |  1 +
 .../java/com/tarento/retail/util/Sql.java     |  4 +-
 8 files changed, 47 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/tarento/retail/controller/UserController.java b/src/main/java/com/tarento/retail/controller/UserController.java
index 0517209..8fb59c0 100644
--- a/src/main/java/com/tarento/retail/controller/UserController.java
+++ b/src/main/java/com/tarento/retail/controller/UserController.java
@@ -564,33 +564,44 @@ public class UserController {
 	@RequestMapping(value = PathRoutes.UserRoutes.REQUEST_OTP, method = RequestMethod.POST)
 	public String requestOTP(@RequestBody LoginUser loginUser) throws JsonProcessingException {
 		if (StringUtils.isNotBlank(loginUser.getUsername())) {
-			if (userService.checkUserNameExists(loginUser.getUsername(), null) != 0L) {
-				Boolean authorized = Boolean.FALSE;
-
-				// Mobile login validation
-				if (loginUser.getIsMobile() != null && loginUser.getIsMobile()) {
-					// Allow only inspector role
-					List<Role> userRoles = userService.findAllRolesByUser(null, null, loginUser.getUsername());
-					if (userRoles != null && userRoles.size() > 0) {
-						for (Role role : userRoles) {
-							if (role.getName().equalsIgnoreCase(Constants.UserRoles.INSPECTOR.name())) {
-								authorized = Boolean.TRUE;
-								break;
+			User user = userService.getUserByEmailId(loginUser.getUsername());
+			if(user != null) {
+				if(!user.getIsDeleted()) {
+
+					Boolean authorized = Boolean.FALSE;
+
+					// Mobile login validation
+					if (loginUser.getIsMobile() != null && loginUser.getIsMobile()) {
+						// Allow only inspector role
+						List<Role> userRoles = userService.findAllRolesByUser(null, null, loginUser.getUsername());
+						if (userRoles != null && userRoles.size() > 0) {
+							for (Role role : userRoles) {
+								if (role.getName().equalsIgnoreCase(Constants.UserRoles.INSPECTOR.name())) {
+									authorized = Boolean.TRUE;
+									break;
+								}
 							}
 						}
+					} else {
+						authorized = Boolean.TRUE;
 					}
-				} else {
-					authorized = Boolean.TRUE;
-				}
 
-				// send otp
-				if (authorized) {
-					if (userService.requestOTP(loginUser.getUsername())) {
-						return ResponseGenerator.successResponse("OTP sent successfully!");
+					// send otp
+					if (authorized) {
+						if (userService.requestOTP(loginUser.getUsername())) {
+							return ResponseGenerator.successResponse("OTP sent successfully!");
+						}
+						return ResponseGenerator.failureResponse("Failed to send OTP.");
 					}
-					return ResponseGenerator.failureResponse("Failed to send OTP.");
+				
+				}else {
+					return ResponseGenerator.failureResponse(Constants.DELETED_USER);
 				}
+				
+			}else {
+				return ResponseGenerator.failureResponse(Constants.UNAUTHORIZED_USER);
 			}
+			
 			return ResponseGenerator.failureResponse(Constants.UNAUTHORIZED_USER);
 		} else {
 			return ResponseGenerator.failureResponse("Email id missing");
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 d9bce4f..e219cd0 100644
--- a/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java
+++ b/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java
@@ -443,6 +443,7 @@ public class UserDaoImpl implements UserDao {
 		try {
 			userId = jdbcTemplate.queryForObject(UserQueries.GET_USER_ID, new Object[] { emailId, emailId, phoneNo },
 					Long.class);
+			
 		} catch (Exception e) {
 			LOGGER.error("Encountered an Exception while finding the UserName Availability : " + e);
 		}
diff --git a/src/main/java/com/tarento/retail/model/User.java b/src/main/java/com/tarento/retail/model/User.java
index 16cde57..7e70fdc 100644
--- a/src/main/java/com/tarento/retail/model/User.java
+++ b/src/main/java/com/tarento/retail/model/User.java
@@ -28,7 +28,8 @@ public class User {
 	private String timeZone;
 	
 	private String avatarUrl;
-
+	
+	
 	public String getAvatarUrl() {
 		return avatarUrl;
 	}
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 939b999..907971b 100644
--- a/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java
+++ b/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java
@@ -67,6 +67,8 @@ public class SqlDataMapper {
 			user.setUsername(rs.getString("username"));
 			user.setEmailId(rs.getString("email_id"));
 			user.setPhoneNo(rs.getString("phone_no"));
+			user.setIsActive(rs.getBoolean("is_active"));
+			user.setIsDeleted(rs.getBoolean("is_deleted"));
 			return user;
 		}
 	}
diff --git a/src/main/java/com/tarento/retail/service/UserService.java b/src/main/java/com/tarento/retail/service/UserService.java
index cb1960f..b399232 100644
--- a/src/main/java/com/tarento/retail/service/UserService.java
+++ b/src/main/java/com/tarento/retail/service/UserService.java
@@ -254,4 +254,6 @@ public interface UserService {
 
 	List<InstituteCourses> findAllInstituteCourses(Long userId);
 
+	User getUserByEmailId(String emailId);
+
 }
\ 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 1f5525a..da00592 100644
--- a/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java
@@ -270,6 +270,12 @@ public class UserServiceImpl implements UserDetailsService, UserService {
 	public Long checkUserNameExists(String emailId, String phoneNo) {
 		return userDao.checkUserNameExists(emailId, phoneNo);
 	}
+	
+	@Override
+	public User getUserByEmailId(String emailId) {
+		return userDao.findOnlyUser(emailId);
+	}
+	
 
 	@Override
 	public Boolean uploadFile(MultipartFile file, long userId) {
diff --git a/src/main/java/com/tarento/retail/util/Constants.java b/src/main/java/com/tarento/retail/util/Constants.java
index f108790..6985cfd 100644
--- a/src/main/java/com/tarento/retail/util/Constants.java
+++ b/src/main/java/com/tarento/retail/util/Constants.java
@@ -63,6 +63,7 @@ public class Constants {
 	public static String UNAUTHORIZED = "Invalid credentials. Please try again.";
 	public static String PROCESS_FAIL = "Process failed, Please try again.";
 	public static String UNAUTHORIZED_USER = "Unauthorized user";
+	public static String DELETED_USER = "User Deleted. Please contact Admin to active";
 	public static final String EXCEPTION_METHOD = "Exception in %s method : %s";
 
 	/**
diff --git a/src/main/java/com/tarento/retail/util/Sql.java b/src/main/java/com/tarento/retail/util/Sql.java
index f18c7f5..9becd1e 100644
--- a/src/main/java/com/tarento/retail/util/Sql.java
+++ b/src/main/java/com/tarento/retail/util/Sql.java
@@ -71,7 +71,7 @@ public interface Sql {
 		final String SELECT_USER_BY_TOKEN = "SELECT COUNT(*) FROM user_authentication WHERE auth_token = ? ";
 		final String SELECT_USER_ON_USERNAME = "SELECT * FROM user usr inner join country_user cu on usr.id =cu.user_id inner join country c on cu.country_id = c.id where username=? or phone_no = ?";
 
-		final String SELECT_ONLY_USER = "SELECT id, username, password, email_id, phone_no FROM user where username = ? or phone_no = ? ";
+		final String SELECT_ONLY_USER = "SELECT id, username, password, email_id, phone_no, is_active, is_deleted FROM user where username = ? or phone_no = ? ";
 
 		final String MAP_USER_TO_ROLE_WITH_ORG = "INSERT INTO user_role (user_id, role_id, org_id) VALUES (?, ?, ?)";
 		final String MAP_USER_TO_ROLE = "INSERT INTO user_role (user_id, role_id) VALUES (?, ?)";
@@ -178,7 +178,7 @@ public interface Sql {
 				+ " LEFT JOIN role_org ro ON ro.role_id = r.id " + " LEFT JOIN role_actions ra ON r.id = ra.role_id "
 				+ " LEFT JOIN actions act ON ra.action_id = act.id " + " WHERE usr.username = ? ";
 
-		final String GET_USER_ID = "SELECT id FROM user WHERE username = ? OR email_id = ? OR phone_no = ?";
+		final String GET_USER_ID = "SELECT id FROM user WHERE (username = ? OR email_id = ? OR phone_no = ?) and is_deleted = 0";
 		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 ";
 		final String SET_USER_PIN = "UPDATE user SET pin=? WHERE id= ?";
-- 
GitLab