From 22ee64ce6d1fb561ce64451e2812c85bf6f5e7fd Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 5 Aug 2026 12:03:13 +0530 Subject: [PATCH] fix update user issue and role issue --- .../employeemaster/EmployeeMasterRepoo.java | 6 + .../employeemaster/M_DesignationRepo.java | 3 + .../BulkRegistrationServiceImpl.java | 319 +++++++++++++++++- .../employeemaster/EmployeeMasterInter.java | 6 + .../EmployeeMasterServiceImpl.java | 35 ++ 5 files changed, 367 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeMasterRepoo.java b/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeMasterRepoo.java index e2b017a4..74fe406c 100644 --- a/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeMasterRepoo.java +++ b/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeMasterRepoo.java @@ -90,4 +90,10 @@ M_User1 checkingEmpDetails(@Param("userName") String userName, @Param("aadhaarNo M_User1 findByUserID(Integer userID); List findByUserIDIn(List userIDs); + + @Query("SELECT u FROM M_User1 u WHERE u.contactNo=:contactNo AND u.userID<>:userID AND deleted=false") + M_User1 findEmployeeByContactForUpdate(@Param("contactNo") String contactNo, @Param("userID") Integer userID); + + @Query("SELECT u FROM M_User1 u WHERE u.aadhaarNo=:aadhaar AND u.userID<>:userID AND deleted=false") + M_User1 findEmployeeAadhaarNoForUpdate(@Param("aadhaar") String aadhaar, @Param("userID") Integer userID); } diff --git a/src/main/java/com/iemr/admin/repo/employeemaster/M_DesignationRepo.java b/src/main/java/com/iemr/admin/repo/employeemaster/M_DesignationRepo.java index e141dd8a..f8b879b0 100644 --- a/src/main/java/com/iemr/admin/repo/employeemaster/M_DesignationRepo.java +++ b/src/main/java/com/iemr/admin/repo/employeemaster/M_DesignationRepo.java @@ -22,6 +22,7 @@ package com.iemr.admin.repo.employeemaster; import java.util.ArrayList; +import java.util.List; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; @@ -35,4 +36,6 @@ public interface M_DesignationRepo extends CrudRepository getDesinationlist(); + List findByDesignationName(String designationName); + } diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java index d1b5a9f1..2d8268bb 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -6,6 +6,8 @@ import com.iemr.admin.data.employeemaster.*; import com.iemr.admin.data.locationmaster.M_District; import com.iemr.admin.data.rolemaster.StateMasterForRole; +import com.iemr.admin.repo.employeemaster.M_DesignationRepo; +import com.iemr.admin.repo.employeemaster.M_UserDemographicsRepo; import com.iemr.admin.repo.employeemaster.V_ShowuserRepo; import com.iemr.admin.service.employeemaster.EmployeeMasterInter; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; @@ -46,9 +48,16 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { public static final String FILE_PATH = "error_log.xlsx"; // Excel file path public List bulkRegistrationErrors = new ArrayList<>(); + @Autowired + private M_UserDemographicsRepo m_UserDemographicsRepo; + @Autowired private EmployeeMasterInter employeeMasterInter; + + @Autowired + private M_DesignationRepo m_DesignationRepo; + @Autowired private Role_MasterInter roleMasterInter; @@ -76,7 +85,7 @@ public void registerBulkUser(String xml, String authorization,String userName,In logger.info("employee_list" + employeeList.getEmployees().toString()); totalEmployeeListSize = employeeList.getEmployees().size(); for (int i = 0; i < employeeList.getEmployees().size(); i++) { - saveUserUser(employeeList.getEmployees().get(i), i, authorization,userName,serviceProviderID); + processUserUser(employeeList.getEmployees().get(i), i, authorization,userName,serviceProviderID); } @@ -98,7 +107,31 @@ public static String escapeXmlSpecialChars(String xml) { // Only escape & that are not already part of valid XML entities return xml.replaceAll("&(?!amp;|lt;|gt;|apos;|quot;|#\\d+;)", "&"); } + /** + * Common entry point — decides create vs update based on whether the user already exists, + * then delegates to the respective method. + */ + private void processUserUser(Employee employee, Integer row, String authorization, String createdBy, Integer serviceProviderID) throws Exception { + + if (employee.getUserName() == null || employee.getUserName().isEmpty()) { + List validationErrors = new ArrayList<>(); + BulkRegistrationError bulkRegistrationErrors_ = new BulkRegistrationError(); + validationErrors.add("Please Enter UserName"); + logAndCollectError(row, employee, validationErrors, bulkRegistrationErrors_); + return; + } + String checkUserIsExist = employeeMasterInter.FindEmployeeName(employee.getUserName()); + logger.info("checkUserIsExist" + checkUserIsExist); + + if (checkUserIsExist.equalsIgnoreCase("usernotexist")) { + // user not found → create flow + saveUserUser(employee, row, authorization, createdBy, serviceProviderID); + } else { + // user already exists → update flow + updateUserUser(employee, row, authorization, createdBy, serviceProviderID); + } + } private void saveUserUser(Employee employee, Integer row, String authorization, String createdBy, Integer serviceProviderID) throws Exception { List validationErrors = new ArrayList<>(); @@ -470,6 +503,284 @@ private void saveUserUser(Employee employee, Integer row, String authorization, */ + private void updateUserUser(Employee employee, Integer row, String authorization, String modifiedBy, Integer serviceProviderID) throws Exception { + List validationErrors = new ArrayList<>(); + BulkRegistrationError bulkRegistrationErrors_ = new BulkRegistrationError(); + + logger.info("employee_list update flow" + employee.toString()); + + // fetch existing user record to update + M_User1 existingUser = employeeMasterInter.FindEmployeeName1(employee.getUserName()); + if (existingUser == null) { + validationErrors.add("User not found for update"); + logAndCollectError(row, employee, validationErrors, bulkRegistrationErrors_); + return; + } + Integer userID = existingUser.getUserID(); + + // duplicate contact check excluding current user + String checkContactIsExist = employeeMasterInter.FindEmployeeContactForUpdate(employee.getContactNo(), userID); + + if (checkContactIsExist.equalsIgnoreCase("contactnotexist")) { + + if (employee.getTitle() == null || employee.getTitle().isEmpty()) { + validationErrors.add("Title is missing."); + } + if (!employee.getTitle().isEmpty() && getTitleId(employee.getTitle()) == 0) { + validationErrors.add("Title is invalid."); + } + + if (employee.getFirstName() == null || employee.getFirstName().isEmpty()) { + validationErrors.add("First Name is missing."); + } + if (!employee.getFirstName().isEmpty()) { + if (employee.getFirstName().length() > 50) { + validationErrors.add("First name is invalid."); + } + if (isNumeric(employee.getFirstName())) { + validationErrors.add("First name is invalid."); + } + } + + if (!employee.getMiddleName().isEmpty()) { + if (employee.getMiddleName().length() > 50) { + validationErrors.add("Middle name is invalid."); + } + if (isNumeric(employee.getMiddleName())) { + validationErrors.add("Middle name is invalid."); + } + } + + if (employee.getLastName() == null || employee.getLastName().isEmpty()) { + validationErrors.add("Last Name is missing."); + } + if (!employee.getLastName().isEmpty()) { + if (employee.getLastName().length() > 50) { + validationErrors.add("Last name is invalid."); + } + if (isNumeric(employee.getLastName())) { + validationErrors.add("Last name is invalid."); + } + } + + if (employee.getGender().isEmpty()) { + validationErrors.add("Gender is missing"); + } + if (employee.getContactNo().isEmpty()) { + validationErrors.add("Contact number missing"); + } + if (!employee.getContactNo().isEmpty() && !isValidPhoneNumber(String.valueOf(employee.getContactNo()))) { + validationErrors.add("Contact Number is invalid"); + } + + if (employee.getDesignation().isEmpty()) { + validationErrors.add("Designation is missing"); + } + + if (employee.getEmergencyContactNo().isEmpty()) { + validationErrors.add("Emergency contact number is missing"); + } + if (!employee.getEmergencyContactNo().isEmpty() && !isValidPhoneNumber(String.valueOf(employee.getEmergencyContactNo()))) { + validationErrors.add("Emergency Contact Number is invalid."); + } + + if (employee.getDob().isEmpty()) { + validationErrors.add("Date of Birth is missing."); + } + if (!employee.getDob().isEmpty() && !isValidDate(convertStringIntoDate(employee.getDob()).toString())) { + validationErrors.add("Date of Birth is invalid."); + } + + if (employee.getEmail().isEmpty()) { + validationErrors.add("Email is missing."); + } + if (!employee.getEmail().isEmpty() && !employee.getEmail().matches(EMAIL_REGEX)) { + validationErrors.add("Invalid Email format."); + } + + // password optional on update — only validated if provided + if (!employee.getPassword().isEmpty() && employee.getPassword().length() < 6) { + validationErrors.add("Please enter a valid password."); + } + + if (!employee.getAadhaarNo().isEmpty()) { + String checkAadhaarIsExist = employeeMasterInter.FindEmployeeAadhaarForUpdate(employee.getAadhaarNo(), userID); + if (!checkAadhaarIsExist.equalsIgnoreCase("aadhaarnotexist")) { + validationErrors.add("Duplicate aadhaar number found"); + } + if (isValidAadhar(employee.getAadhaarNo())) { + validationErrors.add("Aadhaar number is invalid"); + } + } + + if (employee.getQualification().isEmpty()) { + validationErrors.add("Qualification is missing"); + } + + if (employee.getState().isEmpty()) { + validationErrors.add("Current State is missing."); + } + if (!employee.getState().isEmpty() && getStateId(employee.getState()) == 0) { + validationErrors.add("Current State is invalid."); + } + + if (employee.getDistrict().isEmpty()) { + validationErrors.add("Current District is missing."); + } + if (!employee.getDistrict().isEmpty() && getDistrictId(employee.getDistrict()) == 0) { + validationErrors.add("Current District is invalid."); + } + + if (employee.getPermanentState().isEmpty()) { + validationErrors.add("Permanent State is missing."); + } + if (!employee.getPermanentState().isEmpty() && getStateId(employee.getPermanentState()) == 0) { + validationErrors.add("Permanent State is invalid."); + } + + if (employee.getPermanentDistrict().isEmpty()) { + validationErrors.add("Permanent District is missing."); + } + if (!employee.getPermanentDistrict().isEmpty() && getDistrictId(employee.getPermanentDistrict()) == 0) { + validationErrors.add("Permanent District is invalid."); + } + + if (employee.getDateOfJoining().isEmpty()) { + validationErrors.add("Date of Joining is missing."); + } + if (!employee.getDateOfJoining().isEmpty() && !isValidDate(convertStringIntoDate(employee.getDateOfJoining()).toString())) { + validationErrors.add("Date of Joining is invalid."); + } + + if (!validationErrors.isEmpty()) { + logAndCollectError(row, employee, validationErrors, bulkRegistrationErrors_); + } + + boolean coreFieldsValid = !employee.getTitle().isEmpty() && !employee.getFirstName().isEmpty() + && !employee.getLastName().isEmpty() && !employee.getContactNo().isEmpty() + && !employee.getEmergencyContactNo().isEmpty() && !employee.getDob().isEmpty() + && !employee.getUserName().isEmpty() && !employee.getState().isEmpty() + && !employee.getDistrict().isEmpty() && !employee.getPermanentState().isEmpty() + && !employee.getPermanentDistrict().isEmpty() && !employee.getGender().isEmpty() + && !employee.getQualification().isEmpty() + && isValidDate(convertStringIntoDate(employee.getDob()).toString()) + && isValidDate(convertStringIntoDate(employee.getDateOfJoining()).toString()); + + if (coreFieldsValid) { + try { + M_User1 mUser = existingUser; + mUser.setUserID(mUser.getUserID()); + mUser.setTitleID(getTitleId(employee.getTitle())); + mUser.setFirstName(employee.getFirstName()); + mUser.setLastName(employee.getLastName()); + mUser.setdOB(convertStringIntoDate(employee.getDob())); + mUser.setEmergencyContactNo(String.valueOf(employee.getEmergencyContactNo())); + mUser.setContactNo(String.valueOf(employee.getContactNo())); + + if (!employee.getMiddleName().isEmpty()) { + mUser.setMiddleName(employee.getMiddleName()); + } + if (!employee.getDesignation().isEmpty()) { + mUser.setDesignationID(getDesignationId(employee.getDesignation())); + mUser.setDesignationName(employee.getDesignation()); + } + if (!employee.getAadhaarNo().isEmpty() && isValidAadhar(employee.getAadhaarNo())) { + mUser.setAadhaarNo(String.valueOf(employee.getAadhaarNo())); + } + if (!employee.getPan().isEmpty()) { + mUser.setpAN(employee.getPan()); + } + mUser.setEmailID(employee.getEmail()); + mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); + if (!employee.getQualification().isEmpty()) { + mUser.setQualificationID(getQualificationId(employee.getQualification())); + } + mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); + mUser.setModifiedBy(modifiedBy); + mUser.setServiceProviderID(serviceProviderID); + + // password touched only if a new one was supplied + if (!employee.getPassword().isEmpty()) { + mUser.setPassword(generateStrongPassword(employee.getPassword())); + } + + M_User1 updatedUser = employeeMasterInter.saveBulkUserEmployee(mUser); + + M_UserDemographics mUserDemographics = employeeMasterInter.getUserDemographicsByUserID(updatedUser.getUserID()); + if (mUserDemographics == null) { + mUserDemographics = new M_UserDemographics(); + mUserDemographics.setUserID(updatedUser.getUserID()); + mUserDemographics.setCountryID(91); + } + + if (!employee.getCommunity().isEmpty()) { + mUserDemographics.setCommunityID(getCommunityId(employee.getCommunity())); + } + if (!employee.getReligion().isEmpty()) { + mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); + } + mUserDemographics.setModifiedBy(modifiedBy); + + if (!employee.getPermanentAddressLine1().isEmpty()) { + mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); + } + if (!employee.getPermanentState().isEmpty()) { + mUserDemographics.setPermStateID(getStateId(employee.getPermanentState())); + } + if (!employee.getPermanentDistrict().isEmpty()) { + mUserDemographics.setPermDistrictID(getDistrictId(employee.getPermanentDistrict())); + } + if (!employee.getPermanentPincode().isEmpty()) { + mUserDemographics.setPermPinCode(Integer.valueOf(employee.getPermanentPincode())); + } + if (!employee.getMotherName().isEmpty()) { + mUserDemographics.setMothersName(employee.getMotherName()); + } + if (!employee.getFatherName().isEmpty()) { + mUserDemographics.setFathersName(employee.getFatherName()); + } + if (!employee.getAddressLine1().isEmpty()) { + mUserDemographics.setAddressLine1(employee.getAddressLine1()); + } + if (!employee.getState().isEmpty()) { + mUserDemographics.setStateID(getStateId(employee.getState())); + } + if (!employee.getDistrict().isEmpty()) { + mUserDemographics.setDistrictID(getDistrictId(employee.getDistrict())); + } + if (!employee.getPincode().isEmpty()) { + mUserDemographics.setPinCode(employee.getPincode().toString()); + } + + m_UserDemographicsRepo.save(mUserDemographics); + + m_bulkUser.add(mUser); + m_UserDemographics.add(mUserDemographics); + + } catch (Exception e) { + errorLogs.add("Row :" + (row + 1) + e.getMessage()); + logAndCollectError(row, employee, validationErrors, bulkRegistrationErrors_); + } + } + + } else { + validationErrors.add("Contact No already belongs to another user"); + logAndCollectError(row, employee, validationErrors, bulkRegistrationErrors_); + } + } + + // shared helper — same duplicated block ko replace kar diya + private void logAndCollectError(Integer row, Employee employee, List validationErrors, + BulkRegistrationError bulkRegistrationErrors_) { + if (!validationErrors.isEmpty()) { + errorLogs.add("Row " + (row + 1) + ": " + String.join(", ", validationErrors)); + bulkRegistrationErrors_.setRowNumber((row + 1)); + bulkRegistrationErrors_.setUserName(employee.getUserName()); + bulkRegistrationErrors_.setError(validationErrors); + bulkRegistrationErrors.add(bulkRegistrationErrors_); + } + } + private boolean isValidDate(String dateStr) { try { String[] parts = dateStr.split("-"); @@ -587,8 +898,12 @@ private int getTitleId(String titleString) { public int getDesignationId(String designationString) { + if(!m_DesignationRepo.findByDesignationName(designationString).isEmpty()){ + return m_DesignationRepo.findByDesignationName(designationString).get(0).getDesignationID(); - return 20; + }else { + return 0; + } } diff --git a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java index 81b5f454..f085a3ca 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java @@ -198,4 +198,10 @@ Boolean checkingEmpDetails(String userName, String aadhaarNo, String getpAN, Str M_UserServiceRoleMapping2 deleteuserrolemapTM(M_UserServiceRoleMapping2 pre) throws Exception; M_User1 saveBulkUserEmployee(M_User1 mUser); + + String FindEmployeeContactForUpdate(String contactNo, Integer userID); + + String FindEmployeeAadhaarForUpdate(String aadhaarNo, Integer userID); + + M_UserDemographics getUserDemographicsByUserID(Integer userID); } diff --git a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java index f4c07f36..fd119297 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java @@ -1494,4 +1494,39 @@ public M_User1 saveBulkUserEmployee(M_User1 mUser) { return data; } + @Override + public String FindEmployeeContactForUpdate(String contactNo, Integer userID) { + logger.info("EmployeeMasterServiceImpl.FindEmployeeContactForUpdate - start"); + M_User1 data = employeeMasterRepo11.findEmployeeByContactForUpdate(contactNo, userID); + String result; + if (data == null) { + result = "contactnotexist"; + } else { + result = "contactexist"; + } + logger.info("EmployeeMasterServiceImpl.FindEmployeeContactForUpdate - finish"); + return result; + } + + @Override + public String FindEmployeeAadhaarForUpdate(String aadhaarNo, Integer userID) { + logger.info("EmployeeMasterServiceImpl.FindEmployeeAadhaarForUpdate - start"); + M_User1 data = employeeMasterRepo11.findEmployeeAadhaarNoForUpdate(aadhaarNo, userID); + String result; + if (data == null) { + result = "aadhaarnotexist"; + } else { + result = "aadhaarexist"; + } + logger.info("EmployeeMasterServiceImpl.FindEmployeeAadhaarForUpdate - finish"); + return result; + } + + @Override + public M_UserDemographics getUserDemographicsByUserID(Integer userID) { + logger.info("EmployeeMasterServiceImpl.getUserDemographicsByUserID - start"); + M_UserDemographics data = m_UserDemographicsRepo.findByUserID(userID); + logger.info("EmployeeMasterServiceImpl.getUserDemographicsByUserID - finish"); + return data; + } }