From 3c2135eb2d7cb447211a77a762df983e42b9b843 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 4 Mar 2025 10:37:17 +0530 Subject: [PATCH 01/44] Bulk registration --- pom.xml | 4 + .../BulkRegistrationController.java | 84 +++ .../iemr/admin/data/bulkuser/Employee.java | 94 ++++ .../admin/data/bulkuser/EmployeeList.java | 17 + .../BulkRegistrationService.java | 5 + .../BulkRegistrationServiceImpl.java | 482 ++++++++++++++++++ .../bulkRegistration/EmployeeXmlService.java | 21 + .../employeemaster/EmployeeMasterInter.java | 1 + .../EmployeeMasterServiceImpl.java | 10 + .../service/rolemaster/Role_MasterInter.java | 15 +- .../rolemaster/Role_Master_ServiceImpl.java | 18 +- 11 files changed, 736 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java create mode 100644 src/main/java/com/iemr/admin/data/bulkuser/Employee.java create mode 100644 src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java create mode 100644 src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java create mode 100644 src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java create mode 100644 src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java diff --git a/pom.xml b/pom.xml index 080d7a2..13d9b28 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,10 @@ org.springframework.boot spring-boot-devtools + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + org.springframework.boot spring-boot-starter diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java new file mode 100644 index 0000000..9275237 --- /dev/null +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -0,0 +1,84 @@ +package com.iemr.admin.controller.bulkRegistration; + +import com.iemr.admin.repo.employeemaster.EmployeeMasterRepoo; +import com.iemr.admin.service.bulkRegistration.BulkRegistrationService; +import com.iemr.admin.service.bulkRegistration.BulkRegistrationServiceImpl; +import com.iemr.admin.service.bulkRegistration.EmployeeXmlService; +import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; +import io.swagger.v3.oas.annotations.Operation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; + +@RestController + +public class BulkRegistrationController { + @Autowired + private EmployeeXmlService employeeXmlService; + @Autowired + BulkRegistrationServiceImpl bulkRegistrationServiceimpl; + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + + + @Autowired + BulkRegistrationService bulkRegistrationService; + + @Autowired + private EmployeeMasterRepoo employeeMasterRepoo; + private Map errorResponse = new HashMap<>(); + @Autowired + private LocationMasterServiceInter locationMasterServiceInter; + private Map response = new HashMap<>(); + + + @CrossOrigin() + @RequestMapping(value = "/bulkRegistration",method = RequestMethod.POST,headers = "Authorization") + public ResponseEntity> registerBulkUser(@RequestBody String m_user) throws Exception { + logger.info("M_user Request"+m_user.toString()); + try { + bulkRegistrationService.registerBulkUser(m_user); + response.put("status","Success"); + response.put("statusCode",200); + response.put("totalUser",bulkRegistrationServiceimpl.totalEmployeeListSize); + response.put("registeredUser",bulkRegistrationServiceimpl.m_bulkUser.size()); + response.put("error",bulkRegistrationServiceimpl.errorLogs.toString()); + + bulkRegistrationServiceimpl.m_bulkUser.clear(); + bulkRegistrationServiceimpl.m_UserDemographics.clear(); + bulkRegistrationServiceimpl.errorLogs.clear(); + bulkRegistrationServiceimpl.validationErrors.clear(); + + } catch (Exception e) { + response.put("status","Fail"); + response.put("statusCode",500); + throw new RuntimeException(e); + } + return ResponseEntity.ok(response); + + } + @CrossOrigin() + @Operation(description = "Download formatted Excel sheet") + @RequestMapping(value = {"/downloadExcelSheet"},method = {RequestMethod.GET},consumes = {"application/octet-stream"}) + public ResponseEntity exportIntoExcelFile(){ + + // Load the Excel file from resources + ClassPathResource excelFile = new ClassPathResource("xlsxfile/bulkuser_excel_sheet.xlsx"); + + // Return the Excel file as a response with proper headers + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + excelFile.getFilename() + "\"") + .body(excelFile); + } + + + +} diff --git a/src/main/java/com/iemr/admin/data/bulkuser/Employee.java b/src/main/java/com/iemr/admin/data/bulkuser/Employee.java new file mode 100644 index 0000000..74a1483 --- /dev/null +++ b/src/main/java/com/iemr/admin/data/bulkuser/Employee.java @@ -0,0 +1,94 @@ +package com.iemr.admin.data.bulkuser; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import lombok.Data; + +@Data +@JacksonXmlRootElement(localName = "Employee") +public class Employee { + + @JacksonXmlProperty(localName = "Title") + private String title; + + @JacksonXmlProperty(localName = "FirstName") + private String firstName; + + @JacksonXmlProperty(localName = "MiddleName") + private String middleName; + + @JacksonXmlProperty(localName = "LastName") + private String lastName; + + @JacksonXmlProperty(localName = "Gender") + private String gender; + + @JacksonXmlProperty(localName = "ContactNo") + private String contactNo; + + @JacksonXmlProperty(localName = "Designation") + private String designation; + + @JacksonXmlProperty(localName = "EmergencyContactNo") + private String emergencyContactNo; + + @JacksonXmlProperty(localName = "DOB") + private String dob; + + @JacksonXmlProperty(localName = "Age") + private int age; + + @JacksonXmlProperty(localName = "Email") + private String email; + + @JacksonXmlProperty(localName = "MaritalStatus") + private String maritalStatus; + + @JacksonXmlProperty(localName = "AadhaarNo") + private String aadhaarNo; + + @JacksonXmlProperty(localName = "PAN") + private String pan; + + @JacksonXmlProperty(localName = "Qualification") + private String qualification; + + @JacksonXmlProperty(localName = "FatherName") + private String fatherName; + + @JacksonXmlProperty(localName = "MotherName") + private String motherName; + + @JacksonXmlProperty(localName = "Community") + private String community; + + @JacksonXmlProperty(localName = "Religion") + private String religion; + + @JacksonXmlProperty(localName = "AddressLine1") + private String addressLine1; + + @JacksonXmlProperty(localName = "State") + private String state; + + @JacksonXmlProperty(localName = "District") + private String district; + + @JacksonXmlProperty(localName = "Pincode") + private String pincode; + + @JacksonXmlProperty(localName = "PermanentAddressLine1") + private String permanentAddressLine1; + + @JacksonXmlProperty(localName = "PermanentState") + private String permanentState; + + @JacksonXmlProperty(localName = "PermanentDistrict") + private String permanentDistrict; + + @JacksonXmlProperty(localName = "PermanentPincode") + private String permanentPincode; + + @JacksonXmlProperty(localName = "DateOfJoining") + private String dateOfJoining; +} diff --git a/src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java b/src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java new file mode 100644 index 0000000..7d656d2 --- /dev/null +++ b/src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java @@ -0,0 +1,17 @@ +package com.iemr.admin.data.bulkuser; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import lombok.Data; + +import java.util.List; + +@Data +@JacksonXmlRootElement(localName = "Employees") +public class EmployeeList { + + @JsonProperty("Employee") + @JacksonXmlElementWrapper(useWrapping = false) // To avoid extra nested array in XML + private List employees; +} diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java new file mode 100644 index 0000000..55f42b7 --- /dev/null +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java @@ -0,0 +1,5 @@ +package com.iemr.admin.service.bulkRegistration; + +public interface BulkRegistrationService { + void registerBulkUser(String user); +} diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java new file mode 100644 index 0000000..b961385 --- /dev/null +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -0,0 +1,482 @@ +package com.iemr.admin.service.bulkRegistration; + +import com.iemr.admin.data.bulkuser.Employee; +import com.iemr.admin.data.bulkuser.EmployeeList; +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.service.employeemaster.EmployeeMasterInter; +import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; +import com.iemr.admin.service.rolemaster.Role_MasterInter; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Row; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import java.io.ByteArrayOutputStream; +import java.math.BigInteger; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.spec.InvalidKeySpecException; +import java.sql.Date; +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Service +public class BulkRegistrationServiceImpl implements BulkRegistrationService { + private static final String PAN_REGEX = "^[A-Z]{8}[0-9]{3}$"; + private static final String EMAIL_REGEX = "^[\\w-.]+@[\\w-]+\\.[a-zA-Z]{2,}$"; + public Integer totalEmployeeListSize = 0; + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + + @Autowired + private EmployeeMasterInter employeeMasterInter; + @Autowired + private Role_MasterInter roleMasterInter; + @Autowired + private LocationMasterServiceInter locationMasterServiceInter; + + ByteArrayOutputStream out; + @Autowired + EmployeeXmlService employeeXmlService; + public List validationErrors = new ArrayList<>(); + + public List errorLogs = new ArrayList<>(); + public ArrayList m_bulkUser = new ArrayList<>(); + // public ArrayList m_bulkUser1 = new ArrayList<>(); + public ArrayList m_UserDemographics = new ArrayList<>(); + + private List m_districts; + + public List getValidationError() { + return validationErrors; + + } + + + + + @Override + public void registerBulkUser(String xml) { + try { + EmployeeList employeeList = employeeXmlService.parseXml(xml); + 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); + + } + + + } catch (Exception e) { + System.out.println(e.getMessage()); + } + + + } + + + private void saveUserUser(Employee employee, Integer row) throws Exception { + logger.info("employee_list after for loop" + employee.toString()); + + + + if (employee.getTitle() == null || employee.getTitle().isEmpty() || getTitleId(employee.getTitle()) == 0) { + validationErrors.add("Title is missing or invalid."); + } + if (employee.getFirstName() == null || employee.getFirstName().isEmpty()) { + validationErrors.add("First Name is missing."); + } + if (employee.getLastName() == null || employee.getLastName().isEmpty()) { + validationErrors.add("Last Name is missing."); + } + if (employee.getEmail() == null || !employee.getEmail().matches(EMAIL_REGEX)) { + validationErrors.add("Invalid Email format."); + } + if (!isValidPhoneNumber(String.valueOf(employee.getContactNo()))) { + validationErrors.add("Contact Number must be exactly 10 digits."); + } + if (!isValidPhoneNumber(String.valueOf(employee.getEmergencyContactNo()))) { + validationErrors.add("Emergency Contact Number must be exactly 10 digits."); + } + if (!String.valueOf(employee.getAge()).matches("\\d{1,2}")) { + validationErrors.add("Age should be a 1 or 2-digit number."); + } + if (employee.getDob() == null || employee.getDob().toString().isEmpty()) { + validationErrors.add("Date of Birth is invalid."); + } + if (employee.getDateOfJoining() == null || employee.getDateOfJoining().toString().isEmpty()) { + validationErrors.add("Date of Joining is invalid."); + } + if (getStateId(employee.getState()) == 0) { + validationErrors.add("State is invalid."); + } + if (getDistrictId(employee.getDistrict()) == 0) { + validationErrors.add("District is invalid."); + } + + if (getStateId(employee.getPermanentState()) == 0) { + validationErrors.add("Permanent State is invalid."); + } + if (getDistrictId(employee.getPermanentDistrict()) == 0) { + validationErrors.add("Permanent District is invalid."); + } + if(employee.getPincode()==null|| employee.getPincode().isEmpty()){ + validationErrors.add("Pincode is invalid."); + + } + if(employee.getPermanentPincode()==null|| employee.getPermanentPincode().isEmpty()){ + validationErrors.add("Permanent Pincode is invalid."); + + } + if(isValidPAN(employee.getPan())){ + validationErrors.add("PAN is invalid."); + + } + + if (!validationErrors.isEmpty()) { + errorLogs.add("Row " + (row + 1) + ": " + String.join(", ", validationErrors)); + } + + + try { + logger.info("Title: " + employee.getTitle()); + logger.info("Title Id: " + getTitleId(employee.getTitle())); + logger.info("First Name: " + employee.getFirstName()); + logger.info("Last Name: " + employee.getLastName()); + logger.info("Email: " + employee.getEmail()); + logger.info("Contact No: " + employee.getContactNo()); + logger.info("Emergency Contact No: " + employee.getEmergencyContactNo()); + logger.info("Age: " + employee.getAge()); + logger.info("DOB: " + employee.getDob()); + logger.info("State: " + employee.getState()); + logger.info("State ID: " + getStateId(employee.getState())); + logger.info("District: " + employee.getDistrict()); + logger.info("District ID: " + getDistrictId(employee.getDistrict())); + logger.info("Designation: " + employee.getDesignation()); + logger.info("Designation Id: " + getDesignationId(employee.getDesignation())); + logger.info("Qualification: " + employee.getQualification()); + logger.info("Father Name: " + employee.getFatherName()); + logger.info("Mother Name: " + employee.getMotherName()); + logger.info("Address Line 1: " + employee.getAddressLine1()); + logger.info("Permanent Address: " + employee.getPermanentAddressLine1()); + logger.info("Aadhaar No: " + employee.getAadhaarNo()); + logger.info("PAN: " + employee.getPan()); + logger.info("Gender: " + employee.getGender()); + logger.info("Date of Joining: " + employee.getDateOfJoining()); + logger.info("Religion: " + employee.getReligion()); + logger.info("Community: " + employee.getCommunity()); + logger.info("Pincode: " + employee.getPincode()); + + + + M_User1 mUser = new M_User1(); + M_UserDemographics mUserDemographics = new M_UserDemographics(); + + mUser.setTitleID(getTitleId(employee.getTitle())); + mUser.setDesignationID(getDesignationId(employee.getDesignation())); + mUser.setDesignationName("ASHA"); + mUser.setFirstName(employee.getFirstName()); + mUser.setLastName(employee.getLastName()); + mUser.setUserName(employee.getContactNo()); + mUser.setdOB(convertStringIntoDate(employee.getDob())); + mUser.setEmployeeID(employee.getContactNo()); + mUser.setEmergencyContactNo(String.valueOf(employee.getEmergencyContactNo())); + mUser.setContactNo(String.valueOf(employee.getContactNo())); + mUser.setMiddleName(employee.getMiddleName()); + mUser.setAadhaarNo(String.valueOf(employee.getAadhaarNo())); + mUser.setpAN(employee.getPan()); +// mUser.setMaritalStatusID(getMaritalStatusID(employee.getMaritalStatus())); + mUser.setMaritalStatusID(1); + mUser.setEmailID(employee.getEmail()); + mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); + mUser.setQualificationID(getQualificationId(employee.getQualification())); + mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); + mUser.setCreatedBy("PSMRIL2"); + mUser.setModifiedBy("PSMRIL2"); + mUser.setIsSupervisor(false); + mUser.setServiceProviderID(15); + mUser.setPassword(generateStrongPassword("Test@123")); + logger.info("M_user" + mUser); + M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); + System.out.println("bulk_userID" + bulkUserID.getUserID().toString()); + logger.info("M_user Id" + bulkUserID.getUserID()); + mUserDemographics.setUserID(bulkUserID.getUserID()); + mUserDemographics.setCountryID(91); + mUserDemographics.setCommunityID(getCommunityId(employee.getCommunity())); + mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); + mUserDemographics.setFathersName(employee.getFatherName()); + mUserDemographics.setCreatedBy("PSMRIL2"); + mUserDemographics.setAddressLine1(employee.getAddressLine1()); + mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); + mUserDemographics.setPermStateID(getStateId(employee.getPermanentState())); + mUserDemographics.setPermDistrictID(getDistrictId(employee.getPermanentDistrict())); + mUserDemographics.setIsPermanent(false); + mUserDemographics.setPermPinCode(Integer.valueOf(employee.getPermanentPincode())); + mUserDemographics.setMothersName(employee.getMotherName()); + mUserDemographics.setAddressLine1(employee.getPermanentAddressLine1()); + mUserDemographics.setStateID(getStateId(employee.getState())); + mUserDemographics.setIsPresent(false); + mUserDemographics.setStateID(getStateId(employee.getState())); + mUserDemographics.setDistrictID(getDistrictId(employee.getDistrict())); + mUserDemographics.setPinCode(employee.getPincode().toString()); + employeeMasterInter.saveDemography(mUserDemographics); + m_bulkUser.add(mUser); + m_UserDemographics.add(mUserDemographics); + + } catch (Exception e) { + errorLogs.add("Row : " + (row+1) + e.getMessage()); + } + + + } + + + + + public int getGenderId(String genderString) { + int genderId = employeeMasterInter.getAllGender() + .stream() + .filter(gender -> gender.getGenderName().equalsIgnoreCase(genderString)) + .map(M_Gender::getGenderID) + .findFirst() + .orElse(0); + + if (genderId == 0) { + System.out.println("Gender name not found: " + genderString); + } else { + System.out.println("Gender ID: " + genderId); + } + + return genderId; + } + + + + + public int getTitleId(String titleString) { + int titleId = employeeMasterInter.getAllTitle() + .stream() + .filter(title -> title.getTitleName().equalsIgnoreCase(titleString)) + .map(M_Title::getTitleID) + .findFirst() + .orElse(0); + + + return titleId; + } + + + + public int getDesignationId(String designationString) { + + return 20; + } + + + public int getCommunityId(String communityString) { + int communityId = employeeMasterInter.getAllCommunity() + .stream() + .filter(community -> community.getCommunityType().equalsIgnoreCase(communityString)) + .map(M_Community::getCommunityID) + .findFirst() + .orElse(0); + + + return communityId; + } + + public int getQualificationId(String qualificationString) { + int qualificationId = employeeMasterInter.getQualification() + .stream() + .filter(q -> q.getUserQualificationDesc().equalsIgnoreCase(qualificationString)) + .map(M_Userqualification::getQualificationID) + .findFirst() + .orElse(0); + + + + return qualificationId; + } + + + //Religion + public int getReligionStringId(String religionString) { + return employeeMasterInter.getAllReligion() + .stream() + .filter(religion -> religion.getReligionType().equalsIgnoreCase(religionString)) + .map(M_Religion::getReligionID) + .findFirst() + .orElse(0); + } + + + public int getDistrictId(String districtName) { + return m_districts.stream() + .filter(m_district -> m_district.getDistrictName().equalsIgnoreCase(districtName)) + .map(M_District::getDistrictID) + .findFirst() + .orElse(0); + + } + + + public ArrayList getAllState() { + return roleMasterInter.getAllState(); + } + + + public int getStateId(String stateName) { + int stateId = roleMasterInter.getAllState() + .stream() + .filter(state -> state.getStateName().equalsIgnoreCase(stateName)) + .map(StateMasterForRole::getStateID) + .findFirst() + .orElse(0); + + if (stateId == 0) { + logger.info("State name not found: " + stateName); + } else { + System.out.println("State ID: " + stateId); + m_districts = locationMasterServiceInter.getAllDistrictByStateId(stateId); + } + + return stateId; + } + + + + + + private boolean isValidPAN(String pan) { + // Check if the PAN matches the regex + return Pattern.matches(PAN_REGEX, pan); + } + + private boolean isValidPhoneNumber(String phoneNumber) { + // Correct regex: Phone number must start with 6, 7, 8, or 9 and be exactly 10 digits + System.out.println("Phone Number" + phoneNumber); + String regex = "^[6789]\\d{9}$"; + + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(phoneNumber); + + return matcher.matches(); + } + + private Map getHeaderMap(Row headerRow) { + Map headerMap = new HashMap<>(); + for (Cell cell : headerRow) { + headerMap.put(cell.getStringCellValue().trim(), cell.getColumnIndex()); + } + return headerMap; + } + + private Integer getIntegerValue(Row row, Integer cellIndex) { + if (cellIndex == null) return null; + Cell cell = row.getCell(cellIndex); + return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (int) cell.getNumericCellValue() : null; + } + + private Long getLongValue(Row row, Integer cellIndex) { + if (cellIndex == null) return null; + Cell cell = row.getCell(cellIndex); + return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (long) cell.getNumericCellValue() : null; + } + + + private String getStringValue(Row row, Integer cellIndex) { + if (cellIndex == null || row.getCell(cellIndex) == null) return null; + Cell cell = row.getCell(cellIndex); + return (cell.getCellType() == CellType.STRING) ? cell.getStringCellValue().trim() : null; + } + + private void validateHeaders(Map headerMap, List requiredHeaders) { + for (String header : requiredHeaders) { + if (!headerMap.containsKey(header)) { + throw new RuntimeException("Missing required header: " + header); + } + } + } + + private Timestamp getTimestampValue(Row row, Integer cellIndex) { + if (cellIndex == null) return null; + Cell cell = row.getCell(cellIndex); + if (cell != null && cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { + return new Timestamp(cell.getDateCellValue().getTime()); + } + return null; + } + + + public Date convertStringIntoDate(String dateString) throws ParseException { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime dateTime = LocalDateTime.parse(dateString+" "+"00:00:00", formatter); + + + // Convert String to Date + return Date.valueOf(String.valueOf(dateTime)); + + } + + + private Timestamp getTimestampValue(String dateString) { + if (dateString == null || dateString.trim().isEmpty()) { + } + + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // + try { + return new Timestamp(dateFormat.parse(dateString).getTime()); + } catch (ParseException e) { + e.printStackTrace(); // + return null; + } + } + + + public String generateStrongPassword(String password) throws NoSuchAlgorithmException, InvalidKeySpecException { + int iterations = 1001; + char[] chars = password.toCharArray(); + byte[] salt = getSalt(); + + PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 512); + SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512"); + byte[] hash = skf.generateSecret(spec).getEncoded(); + return iterations + ":" + toHex(salt) + ":" + toHex(hash); + } + + private byte[] getSalt() throws NoSuchAlgorithmException { + SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); + byte[] salt = new byte[16]; + sr.nextBytes(salt); + return salt; + } + + private String toHex(byte[] array) throws NoSuchAlgorithmException { + BigInteger bi = new BigInteger(1, array); + String hex = bi.toString(16); + int paddingLength = array.length * 2 - hex.length(); + if (paddingLength > 0) { + return String.format(new StringBuilder().append("%0").append(paddingLength).append("d").toString(), + new Object[]{Integer.valueOf(0)}) + hex; + } + return hex; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java new file mode 100644 index 0000000..7c10bb8 --- /dev/null +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java @@ -0,0 +1,21 @@ +package com.iemr.admin.service.bulkRegistration; + + +import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import com.iemr.admin.data.bulkuser.EmployeeList; +import org.springframework.stereotype.Service; + +@Service +public class EmployeeXmlService { + + private final XmlMapper xmlMapper = new XmlMapper(); + + // Convert XML to EmployeeList (Java Object) + public EmployeeList parseXml(String xmlData) throws Exception { + System.out.println("user_xml_date"+xmlData.toString()); + + return xmlMapper.readValue(xmlData, EmployeeList.class); + } + + +} 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 aae5837..d91d8c7 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java @@ -184,4 +184,5 @@ Boolean checkingEmpDetails(String userName, String aadhaarNo, String getpAN, Str M_UserServiceRoleMapping2 deleteuserrolemapTM(M_UserServiceRoleMapping2 pre) throws Exception; + M_User1 saveBulkUserEmployee(M_User1 mUser); } 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 41ee880..28d5072 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java @@ -1178,4 +1178,14 @@ public M_UserServiceRoleMapping2 deleteuserrolemapTM(M_UserServiceRoleMapping2 u return dataout; } + @Override + public M_User1 saveBulkUserEmployee(M_User1 mUser) { + logger.info("EmployeeMasterServiceImpl.saveEmployee - start"); + M_User1 data = employeeMasterRepo11.save(mUser); +// logger.info("Encrypt password returned " + encryptUserPassword.encryptUserCredentials(data).toString()); + Integer data1 = data.getUserID(); + logger.info("EmployeeMasterServiceImpl.saveEmployee - finish"); + return data; + } + } diff --git a/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java b/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java index 6cc99a4..9c432d9 100644 --- a/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java +++ b/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java @@ -24,12 +24,7 @@ import java.util.ArrayList; import java.util.List; -import com.iemr.admin.data.rolemaster.RoleMaster; -import com.iemr.admin.data.rolemaster.M_Role104; -import com.iemr.admin.data.rolemaster.M_Screen; -import com.iemr.admin.data.rolemaster.M_UserservicerolemappingForRoleProviderAdmin; -import com.iemr.admin.data.rolemaster.RoleScreenMapping; -import com.iemr.admin.data.rolemaster.StateServiceMapping; +import com.iemr.admin.data.rolemaster.*; public interface Role_MasterInter { @@ -56,7 +51,7 @@ public interface Role_MasterInter { List mapScreen(RoleScreenMapping mRoles2); String settingScreenId(Integer sRSMappingID, Integer screenID); - + public ArrayList getProStateServRoles1(int pssmID); List mapfeature(List mRoles3); @@ -64,7 +59,7 @@ public interface Role_MasterInter { ArrayList getServiceByServiceProviderIds(Integer userID); ArrayList getStateByServiceProviderIdAndServiceLines(Integer userID, - Integer serviceID,Boolean isNational); + Integer serviceID,Boolean isNational); ArrayList getAllByMapId(Integer serviceProviderID, Integer serviceID); @@ -76,8 +71,10 @@ ArrayList getStateByServiceProvide RoleMaster configWrapUpTime(RoleMaster role) throws Exception; + ArrayList getAllState(); + + - } diff --git a/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java b/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java index 1471395..683487d 100644 --- a/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java @@ -46,8 +46,8 @@ import jakarta.persistence.EntityManager; @Service -public class Role_Master_ServiceImpl implements Role_MasterInter -{ +public class Role_Master_ServiceImpl implements Role_MasterInter { + @Autowired private StateMasterRepo stateMasterRepo; @@ -62,7 +62,7 @@ public class Role_Master_ServiceImpl implements Role_MasterInter @Autowired private RoleScreenMappingRepo roleScreenMappingRepo; - + @Autowired private M_ScreenRepo m_ScreenRepo; @@ -279,7 +279,7 @@ public ArrayList getServiceByServi @Override public ArrayList - getStateByServiceProviderIdAndServiceLines(Integer userID, Integer serviceID, Boolean isNational) + getStateByServiceProviderIdAndServiceLines(Integer userID, Integer serviceID, Boolean isNational) { if (isNational == false) { @@ -364,7 +364,7 @@ public ArrayList getProStateServRolesActive(Integer providerServiceM public RoleMaster configWrapUpTime(RoleMaster role) throws Exception { // TODO Auto-generated method stub RoleMaster buff=mRoleRepo.findByRoleID(role.getRoleID()); - + if(buff==null) { throw new Exception("Invalid Role"); } @@ -374,8 +374,14 @@ public RoleMaster configWrapUpTime(RoleMaster role) throws Exception { buff.setIsWrapUpTime(role.getIsWrapUpTime()); buff.setWrapUpTime(role.getWrapUpTime()); buff.setModifiedBy(role.getModifiedBy()); - + return mRoleRepo.save(buff); } + @Override + public ArrayList getAllState() { + return stateMasterRepo.getAllState(); + } + + } From 23cccacd1126a01a5a3c39ad33dcf405535524c7 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Mar 2025 14:10:44 +0530 Subject: [PATCH 02/44] Bulk registration --- .../controller/bulkRegistration/BulkRegistrationController.java | 2 -- .../service/bulkRegistration/BulkRegistrationServiceImpl.java | 1 - 2 files changed, 3 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 9275237..dde1937 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -39,7 +39,6 @@ public class BulkRegistrationController { private Map response = new HashMap<>(); - @CrossOrigin() @RequestMapping(value = "/bulkRegistration",method = RequestMethod.POST,headers = "Authorization") public ResponseEntity> registerBulkUser(@RequestBody String m_user) throws Exception { logger.info("M_user Request"+m_user.toString()); @@ -64,7 +63,6 @@ public ResponseEntity> registerBulkUser(@RequestBody String return ResponseEntity.ok(response); } - @CrossOrigin() @Operation(description = "Download formatted Excel sheet") @RequestMapping(value = {"/downloadExcelSheet"},method = {RequestMethod.GET},consumes = {"application/octet-stream"}) public ResponseEntity exportIntoExcelFile(){ 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 b961385..b4b1cfc 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -443,7 +443,6 @@ private Timestamp getTimestampValue(String dateString) { try { return new Timestamp(dateFormat.parse(dateString).getTime()); } catch (ParseException e) { - e.printStackTrace(); // return null; } } From 83f693ebb9bfb5be3f58631548e34ee7f70922f5 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 13 Mar 2025 11:30:50 +0530 Subject: [PATCH 03/44] Bulk registration --- .../BulkRegistrationController.java | 6 +- .../BulkRegistrationService.java | 2 +- .../BulkRegistrationServiceImpl.java | 131 +++--------------- 3 files changed, 20 insertions(+), 119 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index dde1937..24b146a 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -40,10 +40,10 @@ public class BulkRegistrationController { @RequestMapping(value = "/bulkRegistration",method = RequestMethod.POST,headers = "Authorization") - public ResponseEntity> registerBulkUser(@RequestBody String m_user) throws Exception { - logger.info("M_user Request"+m_user.toString()); + public ResponseEntity> registerBulkUser(@RequestBody String m_user,@RequestHeader String authorization) throws Exception { + logger.info("Bulk registration request received. Request payload is omitted from logs."); try { - bulkRegistrationService.registerBulkUser(m_user); + bulkRegistrationService.registerBulkUser(m_user,authorization); response.put("status","Success"); response.put("statusCode",200); response.put("totalUser",bulkRegistrationServiceimpl.totalEmployeeListSize); diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java index 55f42b7..2e5d0dd 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java @@ -1,5 +1,5 @@ package com.iemr.admin.service.bulkRegistration; public interface BulkRegistrationService { - void registerBulkUser(String user); + void registerBulkUser(String user,String authorization); } 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 b4b1cfc..c7c7e99 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -8,9 +8,8 @@ import com.iemr.admin.service.employeemaster.EmployeeMasterInter; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; import com.iemr.admin.service.rolemaster.Role_MasterInter; +import com.iemr.admin.utils.JwtUtil; import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,9 +24,7 @@ import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -43,6 +40,8 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { private static final String EMAIL_REGEX = "^[\\w-.]+@[\\w-]+\\.[a-zA-Z]{2,}$"; public Integer totalEmployeeListSize = 0; private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + @Autowired + JwtUtil jwtUtil; @Autowired private EmployeeMasterInter employeeMasterInter; @@ -58,7 +57,6 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { public List errorLogs = new ArrayList<>(); public ArrayList m_bulkUser = new ArrayList<>(); - // public ArrayList m_bulkUser1 = new ArrayList<>(); public ArrayList m_UserDemographics = new ArrayList<>(); private List m_districts; @@ -69,33 +67,29 @@ public List getValidationError() { } - - @Override - public void registerBulkUser(String xml) { + public void registerBulkUser(String xml, String authorization) { try { EmployeeList employeeList = employeeXmlService.parseXml(xml); 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); + saveUserUser(employeeList.getEmployees().get(i), i, authorization); } } catch (Exception e) { - System.out.println(e.getMessage()); + logger.error("Exception:" + e.getMessage()); } } - private void saveUserUser(Employee employee, Integer row) throws Exception { + private void saveUserUser(Employee employee, Integer row, String authorization) throws Exception { logger.info("employee_list after for loop" + employee.toString()); - - if (employee.getTitle() == null || employee.getTitle().isEmpty() || getTitleId(employee.getTitle()) == 0) { validationErrors.add("Title is missing or invalid."); } @@ -136,15 +130,15 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { if (getDistrictId(employee.getPermanentDistrict()) == 0) { validationErrors.add("Permanent District is invalid."); } - if(employee.getPincode()==null|| employee.getPincode().isEmpty()){ + if (employee.getPincode() == null || employee.getPincode().isEmpty()) { validationErrors.add("Pincode is invalid."); } - if(employee.getPermanentPincode()==null|| employee.getPermanentPincode().isEmpty()){ + if (employee.getPermanentPincode() == null || employee.getPermanentPincode().isEmpty()) { validationErrors.add("Permanent Pincode is invalid."); } - if(isValidPAN(employee.getPan())){ + if (!isValidPAN(employee.getPan())) { validationErrors.add("PAN is invalid."); } @@ -155,35 +149,6 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { try { - logger.info("Title: " + employee.getTitle()); - logger.info("Title Id: " + getTitleId(employee.getTitle())); - logger.info("First Name: " + employee.getFirstName()); - logger.info("Last Name: " + employee.getLastName()); - logger.info("Email: " + employee.getEmail()); - logger.info("Contact No: " + employee.getContactNo()); - logger.info("Emergency Contact No: " + employee.getEmergencyContactNo()); - logger.info("Age: " + employee.getAge()); - logger.info("DOB: " + employee.getDob()); - logger.info("State: " + employee.getState()); - logger.info("State ID: " + getStateId(employee.getState())); - logger.info("District: " + employee.getDistrict()); - logger.info("District ID: " + getDistrictId(employee.getDistrict())); - logger.info("Designation: " + employee.getDesignation()); - logger.info("Designation Id: " + getDesignationId(employee.getDesignation())); - logger.info("Qualification: " + employee.getQualification()); - logger.info("Father Name: " + employee.getFatherName()); - logger.info("Mother Name: " + employee.getMotherName()); - logger.info("Address Line 1: " + employee.getAddressLine1()); - logger.info("Permanent Address: " + employee.getPermanentAddressLine1()); - logger.info("Aadhaar No: " + employee.getAadhaarNo()); - logger.info("PAN: " + employee.getPan()); - logger.info("Gender: " + employee.getGender()); - logger.info("Date of Joining: " + employee.getDateOfJoining()); - logger.info("Religion: " + employee.getReligion()); - logger.info("Community: " + employee.getCommunity()); - logger.info("Pincode: " + employee.getPincode()); - - M_User1 mUser = new M_User1(); M_UserDemographics mUserDemographics = new M_UserDemographics(); @@ -201,27 +166,23 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { mUser.setMiddleName(employee.getMiddleName()); mUser.setAadhaarNo(String.valueOf(employee.getAadhaarNo())); mUser.setpAN(employee.getPan()); -// mUser.setMaritalStatusID(getMaritalStatusID(employee.getMaritalStatus())); mUser.setMaritalStatusID(1); mUser.setEmailID(employee.getEmail()); mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); mUser.setQualificationID(getQualificationId(employee.getQualification())); mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); - mUser.setCreatedBy("PSMRIL2"); - mUser.setModifiedBy("PSMRIL2"); + mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); mUser.setIsSupervisor(false); mUser.setServiceProviderID(15); mUser.setPassword(generateStrongPassword("Test@123")); - logger.info("M_user" + mUser); M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); - System.out.println("bulk_userID" + bulkUserID.getUserID().toString()); - logger.info("M_user Id" + bulkUserID.getUserID()); mUserDemographics.setUserID(bulkUserID.getUserID()); mUserDemographics.setCountryID(91); mUserDemographics.setCommunityID(getCommunityId(employee.getCommunity())); mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); mUserDemographics.setFathersName(employee.getFatherName()); - mUserDemographics.setCreatedBy("PSMRIL2"); + mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); mUserDemographics.setAddressLine1(employee.getAddressLine1()); mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); mUserDemographics.setPermStateID(getStateId(employee.getPermanentState())); @@ -240,15 +201,13 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { m_UserDemographics.add(mUserDemographics); } catch (Exception e) { - errorLogs.add("Row : " + (row+1) + e.getMessage()); + errorLogs.add("Row : " + (row + 1) + e.getMessage()); } } - - public int getGenderId(String genderString) { int genderId = employeeMasterInter.getAllGender() .stream() @@ -267,8 +226,6 @@ public int getGenderId(String genderString) { } - - public int getTitleId(String titleString) { int titleId = employeeMasterInter.getAllTitle() .stream() @@ -282,7 +239,6 @@ public int getTitleId(String titleString) { } - public int getDesignationId(String designationString) { return 20; @@ -310,11 +266,9 @@ public int getQualificationId(String qualificationString) { .orElse(0); - return qualificationId; } - //Religion public int getReligionStringId(String religionString) { return employeeMasterInter.getAllReligion() @@ -359,10 +313,6 @@ public int getStateId(String stateName) { return stateId; } - - - - private boolean isValidPAN(String pan) { // Check if the PAN matches the regex return Pattern.matches(PAN_REGEX, pan); @@ -387,64 +337,15 @@ private Map getHeaderMap(Row headerRow) { return headerMap; } - private Integer getIntegerValue(Row row, Integer cellIndex) { - if (cellIndex == null) return null; - Cell cell = row.getCell(cellIndex); - return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (int) cell.getNumericCellValue() : null; - } - - private Long getLongValue(Row row, Integer cellIndex) { - if (cellIndex == null) return null; - Cell cell = row.getCell(cellIndex); - return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (long) cell.getNumericCellValue() : null; - } - - - private String getStringValue(Row row, Integer cellIndex) { - if (cellIndex == null || row.getCell(cellIndex) == null) return null; - Cell cell = row.getCell(cellIndex); - return (cell.getCellType() == CellType.STRING) ? cell.getStringCellValue().trim() : null; - } - - private void validateHeaders(Map headerMap, List requiredHeaders) { - for (String header : requiredHeaders) { - if (!headerMap.containsKey(header)) { - throw new RuntimeException("Missing required header: " + header); - } - } - } - - private Timestamp getTimestampValue(Row row, Integer cellIndex) { - if (cellIndex == null) return null; - Cell cell = row.getCell(cellIndex); - if (cell != null && cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { - return new Timestamp(cell.getDateCellValue().getTime()); - } - return null; - } - public Date convertStringIntoDate(String dateString) throws ParseException { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime dateTime = LocalDateTime.parse(dateString+" "+"00:00:00", formatter); + LocalDateTime dateTime = LocalDateTime.parse(dateString + " " + "00:00:00", formatter); // Convert String to Date - return Date.valueOf(String.valueOf(dateTime)); - - } - + return Date.valueOf(String.valueOf(dateTime)); - private Timestamp getTimestampValue(String dateString) { - if (dateString == null || dateString.trim().isEmpty()) { - } - - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // - try { - return new Timestamp(dateFormat.parse(dateString).getTime()); - } catch (ParseException e) { - return null; - } } From cdd7b2a1a0d0d7ca2c8977bc895abc9b46693639 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Mon, 31 Mar 2025 13:12:10 +0530 Subject: [PATCH 04/44] add userName and password in Bulk registration --- pom.xml | 13 +- .../BulkRegistrationController.java | 65 +- .../data/bulkuser/BulkRegistrationError.java | 12 + .../iemr/admin/data/bulkuser/Employee.java | 74 +- .../admin/data/employeemaster/M_Religion.java | 3 +- .../employeemaster/EmployeeMasterRepoo.java | 7 + .../BulkRegistrationServiceImpl.java | 707 ++++++++++++++---- .../employeemaster/EmployeeMasterInter.java | 3 + .../EmployeeMasterServiceImpl.java | 19 + .../utils/JwtUserIdValidationFilter.java | 187 ++--- 10 files changed, 787 insertions(+), 303 deletions(-) create mode 100644 src/main/java/com/iemr/admin/data/bulkuser/BulkRegistrationError.java diff --git a/pom.xml b/pom.xml index 13d9b28..5d04359 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,7 @@ 1.2.0.Final 1.16.18 ${ENV_VAR} + target/classes/application.properties target/classes/admin_${environment}.properties @@ -77,6 +78,11 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.apache.commons + commons-compress + 1.21 + org.springframework.boot spring-boot-starter-web @@ -185,12 +191,7 @@ org.apache.poi poi-ooxml 5.2.3 - - - org.apache.commons - commons-compress - - + diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 24b146a..fafa4d2 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -6,6 +6,7 @@ import com.iemr.admin.service.bulkRegistration.EmployeeXmlService; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -19,7 +20,6 @@ import java.util.Map; @RestController - public class BulkRegistrationController { @Autowired private EmployeeXmlService employeeXmlService; @@ -33,50 +33,59 @@ public class BulkRegistrationController { @Autowired private EmployeeMasterRepoo employeeMasterRepoo; - private Map errorResponse = new HashMap<>(); + private Map errorResponse = new HashMap<>(); @Autowired private LocationMasterServiceInter locationMasterServiceInter; - private Map response = new HashMap<>(); - + private Map response = new HashMap<>(); - @RequestMapping(value = "/bulkRegistration",method = RequestMethod.POST,headers = "Authorization") - public ResponseEntity> registerBulkUser(@RequestBody String m_user,@RequestHeader String authorization) throws Exception { - logger.info("Bulk registration request received. Request payload is omitted from logs."); + @CrossOrigin() + @PostMapping(value = "/bulkRegistration", headers = "Authorization") + public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization) { + bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); + logger.info("Bulk registration request received. Request payload is omitted from logs."); try { - bulkRegistrationService.registerBulkUser(m_user,authorization); - response.put("status","Success"); - response.put("statusCode",200); - response.put("totalUser",bulkRegistrationServiceimpl.totalEmployeeListSize); - response.put("registeredUser",bulkRegistrationServiceimpl.m_bulkUser.size()); - response.put("error",bulkRegistrationServiceimpl.errorLogs.toString()); + bulkRegistrationService.registerBulkUser(m_user, authorization); + response.put("status", "Success"); + response.put("statusCode", 200); + response.put("totalUser", bulkRegistrationServiceimpl.totalEmployeeListSize); + response.put("registeredUser", bulkRegistrationServiceimpl.m_bulkUser.size()); + response.put("error", bulkRegistrationServiceimpl.errorLogs.toString()); bulkRegistrationServiceimpl.m_bulkUser.clear(); bulkRegistrationServiceimpl.m_UserDemographics.clear(); bulkRegistrationServiceimpl.errorLogs.clear(); - bulkRegistrationServiceimpl.validationErrors.clear(); + bulkRegistrationServiceimpl.totalEmployeeListSize=0; } catch (Exception e) { - response.put("status","Fail"); - response.put("statusCode",500); - throw new RuntimeException(e); + response.put("message", e.getMessage()); + response.put("statusCode", 500); + } return ResponseEntity.ok(response); } - @Operation(description = "Download formatted Excel sheet") - @RequestMapping(value = {"/downloadExcelSheet"},method = {RequestMethod.GET},consumes = {"application/octet-stream"}) - public ResponseEntity exportIntoExcelFile(){ - // Load the Excel file from resources - ClassPathResource excelFile = new ClassPathResource("xlsxfile/bulkuser_excel_sheet.xlsx"); + @CrossOrigin() + @GetMapping("/download-error-sheet") + public ResponseEntity downloadErrorSheet() { + try { + byte[] fileContent = bulkRegistrationServiceimpl.insertErrorLog(); + + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Disposition", "attachment; filename=error_log.xlsx"); - // Return the Excel file as a response with proper headers - return ResponseEntity.ok() - .contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + excelFile.getFilename() + "\"") - .body(excelFile); - } + if(!bulkRegistrationServiceimpl.bulkRegistrationErrors.isEmpty()){ + bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); + } + return ResponseEntity.ok() + .headers(headers) + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(fileContent); + } catch (Exception e) { + return ResponseEntity.status(500).body(null); + } + } } diff --git a/src/main/java/com/iemr/admin/data/bulkuser/BulkRegistrationError.java b/src/main/java/com/iemr/admin/data/bulkuser/BulkRegistrationError.java new file mode 100644 index 0000000..cf3a14c --- /dev/null +++ b/src/main/java/com/iemr/admin/data/bulkuser/BulkRegistrationError.java @@ -0,0 +1,12 @@ +package com.iemr.admin.data.bulkuser; + +import lombok.Data; + +import java.util.List; + +@Data +public class BulkRegistrationError { + String userName; + Integer rowNumber; + List error; +} diff --git a/src/main/java/com/iemr/admin/data/bulkuser/Employee.java b/src/main/java/com/iemr/admin/data/bulkuser/Employee.java index 74a1483..984060d 100644 --- a/src/main/java/com/iemr/admin/data/bulkuser/Employee.java +++ b/src/main/java/com/iemr/admin/data/bulkuser/Employee.java @@ -9,86 +9,94 @@ public class Employee { @JacksonXmlProperty(localName = "Title") - private String title; + private String title=""; @JacksonXmlProperty(localName = "FirstName") - private String firstName; + private String firstName=""; @JacksonXmlProperty(localName = "MiddleName") - private String middleName; + private String middleName=""; @JacksonXmlProperty(localName = "LastName") - private String lastName; + private String lastName=""; @JacksonXmlProperty(localName = "Gender") - private String gender; + private String gender=""; @JacksonXmlProperty(localName = "ContactNo") - private String contactNo; + private String contactNo=""; @JacksonXmlProperty(localName = "Designation") - private String designation; + private String designation=""; @JacksonXmlProperty(localName = "EmergencyContactNo") - private String emergencyContactNo; + private String emergencyContactNo=""; - @JacksonXmlProperty(localName = "DOB") - private String dob; + @JacksonXmlProperty(localName = "DateOfBirth") + private String dob=""; @JacksonXmlProperty(localName = "Age") - private int age; + private int age=0; @JacksonXmlProperty(localName = "Email") - private String email; + private String email=""; @JacksonXmlProperty(localName = "MaritalStatus") - private String maritalStatus; + private String maritalStatus=""; @JacksonXmlProperty(localName = "AadhaarNo") - private String aadhaarNo; + private String aadhaarNo=""; @JacksonXmlProperty(localName = "PAN") - private String pan; + private String pan=""; @JacksonXmlProperty(localName = "Qualification") - private String qualification; + private String qualification=""; @JacksonXmlProperty(localName = "FatherName") - private String fatherName; + private String fatherName=""; @JacksonXmlProperty(localName = "MotherName") - private String motherName; + private String motherName=""; @JacksonXmlProperty(localName = "Community") - private String community; + private String community=""; @JacksonXmlProperty(localName = "Religion") - private String religion; + private String religion=""; - @JacksonXmlProperty(localName = "AddressLine1") - private String addressLine1; + @JacksonXmlProperty(localName = "CurrentAddressLine1") + private String addressLine1=""; - @JacksonXmlProperty(localName = "State") - private String state; + @JacksonXmlProperty(localName = "CurrentState") + private String state=""; - @JacksonXmlProperty(localName = "District") - private String district; + @JacksonXmlProperty(localName = "CurrentDistrict") + private String district=""; - @JacksonXmlProperty(localName = "Pincode") - private String pincode; + @JacksonXmlProperty(localName = "CurrentPincode") + private String pincode=""; @JacksonXmlProperty(localName = "PermanentAddressLine1") - private String permanentAddressLine1; + private String permanentAddressLine1=""; @JacksonXmlProperty(localName = "PermanentState") - private String permanentState; + private String permanentState=""; @JacksonXmlProperty(localName = "PermanentDistrict") - private String permanentDistrict; + private String permanentDistrict=""; @JacksonXmlProperty(localName = "PermanentPincode") - private String permanentPincode; + private String permanentPincode=""; @JacksonXmlProperty(localName = "DateOfJoining") - private String dateOfJoining; + private String dateOfJoining=""; + + @JacksonXmlProperty(localName = "UserName") + private String UserName=""; + + @JacksonXmlProperty(localName = "Password") + private String Password=""; + + } diff --git a/src/main/java/com/iemr/admin/data/employeemaster/M_Religion.java b/src/main/java/com/iemr/admin/data/employeemaster/M_Religion.java index 2e733ac..dd2bfd9 100644 --- a/src/main/java/com/iemr/admin/data/employeemaster/M_Religion.java +++ b/src/main/java/com/iemr/admin/data/employeemaster/M_Religion.java @@ -36,8 +36,7 @@ @Entity @Table(name = "m_Religion") -public class M_Religion -{ +public class M_Religion { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) 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 9865245..3c90c81 100644 --- a/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeMasterRepoo.java +++ b/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeMasterRepoo.java @@ -40,9 +40,16 @@ public interface EmployeeMasterRepoo extends CrudRepository @Query("SELECT u FROM M_User1 u WHERE u.userID=:userID AND deleted=false") M_User1 editEmployee(@Param("userID") Integer userID); + @Query("SELECT u FROM M_User1 u WHERE u.aadhaarNo=:aadhaar AND deleted=false ") + M_User1 findEmployeeAadhaarNo(@Param("aadhaar") String userName); + @Query("SELECT u FROM M_User1 u WHERE u.userName=:userName AND deleted=false ") M_User1 findEmployeeByName(@Param("userName") String userName); + + @Query("SELECT u FROM M_User1 u WHERE u.contactNo=:contactNo AND deleted=false ") + M_User1 findEmployeeByContact(@Param("contactNo") String userName); + @Query("SELECT u FROM M_User1 u WHERE u.userName=:userName OR u.aadhaarNo=:aadhaarNo OR u.pAN=:getpAN OR u.employeeID=:employeeID OR u.healthProfessionalID=:healthProfessionalID AND deleted=false ") M_User1 checkingEmpDetails(@Param("userName") String userName, @Param("aadhaarNo") String aadhaarNo, @Param("getpAN") String getpAN,@Param("employeeID") String employeeID, @Param("healthProfessionalID") String healthProfessionalID); 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 c7c7e99..56f9a26 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -1,36 +1,40 @@ package com.iemr.admin.service.bulkRegistration; +import com.iemr.admin.data.bulkuser.BulkRegistrationError; import com.iemr.admin.data.bulkuser.Employee; import com.iemr.admin.data.bulkuser.EmployeeList; 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.data.user.M_UserServiceRoleMapping; import com.iemr.admin.service.employeemaster.EmployeeMasterInter; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; import com.iemr.admin.service.rolemaster.Role_MasterInter; import com.iemr.admin.utils.JwtUtil; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; -import java.io.ByteArrayOutputStream; +import java.io.*; import java.math.BigInteger; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; import java.sql.Date; import java.text.ParseException; -import java.time.LocalDateTime; +import java.time.*; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.time.format.DateTimeParseException; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -42,6 +46,9 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); @Autowired JwtUtil jwtUtil; + public static final String FILE_PATH = "error_log.xlsx"; // Excel file path + public List bulkRegistrationErrors = new ArrayList<>(); + @Autowired private EmployeeMasterInter employeeMasterInter; @@ -50,31 +57,29 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { @Autowired private LocationMasterServiceInter locationMasterServiceInter; - ByteArrayOutputStream out; @Autowired EmployeeXmlService employeeXmlService; - public List validationErrors = new ArrayList<>(); - public List errorLogs = new ArrayList<>(); + public ArrayList errorLogs = new ArrayList<>(); public ArrayList m_bulkUser = new ArrayList<>(); public ArrayList m_UserDemographics = new ArrayList<>(); private List m_districts; - public List getValidationError() { - return validationErrors; - - } - - @Override public void registerBulkUser(String xml, String authorization) { try { EmployeeList employeeList = employeeXmlService.parseXml(xml); - 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); + if (!employeeList.getEmployees().isEmpty()) { + 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); + + + } + } else { + errorLogs.add("Data is invalid or empty"); } @@ -88,127 +93,455 @@ public void registerBulkUser(String xml, String authorization) { private void saveUserUser(Employee employee, Integer row, String authorization) throws Exception { + List validationErrors = new ArrayList<>(); + BulkRegistrationError bulkRegistrationErrors_ = new BulkRegistrationError(); + M_User1 mUser = new M_User1(); + M_UserDemographics mUserDemographics = new M_UserDemographics(); + M_UserServiceRoleMapping2 m_userServiceRoleMapping = new M_UserServiceRoleMapping2(); + logger.info("employee_list after for loop" + employee.toString()); + if (!employee.getUserName().isEmpty()) { + String checkUserIsExist = employeeMasterInter.FindEmployeeName(employee.getUserName()); + String checkContactIsExist = employeeMasterInter.FindEmployeeContact(employee.getContactNo()); + logger.info("checkAAdharIsExist" + checkUserIsExist); + if (checkUserIsExist.equalsIgnoreCase("usernotexist")) { + if (checkContactIsExist.equalsIgnoreCase("contactnotexist")) { + if (employee.getTitle() == null || employee.getTitle().isEmpty()) { + validationErrors.add("Title is missing."); + } + if (!employee.getTitle().isEmpty()) { + if (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()) { + if (!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()) { + if (!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()){ + if(!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()){ + if (!employee.getEmail().matches(EMAIL_REGEX)) { + validationErrors.add("Invalid Email format."); + } + } + + if (employee.getPassword().isEmpty()) { + validationErrors.add("Please Enter valid password."); + + } + + if (!employee.getAadhaarNo().isEmpty()) { + if (!employeeMasterInter.FindEmployeeAadhaar(employee.getAadhaarNo()).equalsIgnoreCase("aadhaarnotexist")) { + validationErrors.add("Duplicate aadhaar number found"); - if (employee.getTitle() == null || employee.getTitle().isEmpty() || getTitleId(employee.getTitle()) == 0) { - validationErrors.add("Title is missing or invalid."); - } - if (employee.getFirstName() == null || employee.getFirstName().isEmpty()) { - validationErrors.add("First Name is missing."); - } - if (employee.getLastName() == null || employee.getLastName().isEmpty()) { - validationErrors.add("Last Name is missing."); - } - if (employee.getEmail() == null || !employee.getEmail().matches(EMAIL_REGEX)) { - validationErrors.add("Invalid Email format."); - } - if (!isValidPhoneNumber(String.valueOf(employee.getContactNo()))) { - validationErrors.add("Contact Number must be exactly 10 digits."); - } - if (!isValidPhoneNumber(String.valueOf(employee.getEmergencyContactNo()))) { - validationErrors.add("Emergency Contact Number must be exactly 10 digits."); - } - if (!String.valueOf(employee.getAge()).matches("\\d{1,2}")) { - validationErrors.add("Age should be a 1 or 2-digit number."); - } - if (employee.getDob() == null || employee.getDob().toString().isEmpty()) { - validationErrors.add("Date of Birth is invalid."); - } - if (employee.getDateOfJoining() == null || employee.getDateOfJoining().toString().isEmpty()) { - validationErrors.add("Date of Joining is invalid."); - } - if (getStateId(employee.getState()) == 0) { - validationErrors.add("State is invalid."); - } - if (getDistrictId(employee.getDistrict()) == 0) { - validationErrors.add("District is invalid."); - } + } + if(isValidAadhar(employee.getAadhaarNo())){ + validationErrors.add("Aadhaar number is invalid"); + + } + } - if (getStateId(employee.getPermanentState()) == 0) { - validationErrors.add("Permanent State is invalid."); - } - if (getDistrictId(employee.getPermanentDistrict()) == 0) { - validationErrors.add("Permanent District is invalid."); - } - if (employee.getPincode() == null || employee.getPincode().isEmpty()) { - validationErrors.add("Pincode is invalid."); - } - if (employee.getPermanentPincode() == null || employee.getPermanentPincode().isEmpty()) { - validationErrors.add("Permanent Pincode is invalid."); + if (employee.getQualification().isEmpty()) { + validationErrors.add("Qualification is missing"); - } - if (!isValidPAN(employee.getPan())) { - validationErrors.add("PAN is invalid."); + } + + if (employee.getState().isEmpty()) { + validationErrors.add("Current State is missing."); + } + if (!employee.getState().isEmpty()) { + if (getStateId(employee.getState()) == 0) { + validationErrors.add("Current State is invalid."); + + } + } + if (employee.getDistrict().isEmpty()) { + validationErrors.add("Current District is missing."); + } + if (!employee.getDistrict().isEmpty()) { + if (getDistrictId(employee.getDistrict()) == 0) { + validationErrors.add("Current District is invalid."); + + } + } + + if (employee.getPermanentState().isEmpty()) { + validationErrors.add("Permanent State is missing."); + } + if (!employee.getPermanentState().isEmpty()) { + if (getStateId(employee.getPermanentState()) == 0) { + validationErrors.add("Permanent State is invalid."); + + } + } + if (employee.getPermanentDistrict().isEmpty()) { + validationErrors.add("Permanent District is missing."); + } + + if (!employee.getPermanentDistrict().isEmpty()) { + if (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()){ + if(!isValidDate(convertStringIntoDate(employee.getDateOfJoining()).toString())){ + validationErrors.add("Date of Joining is invalid."); + + } + } + + + + 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_); + + + + } + + + // showLogger(employee); + + if (!employee.getTitle().isEmpty() && !employee.getFirstName().isEmpty() && !employee.getLastName().isEmpty() && !employee.getContactNo().isEmpty() && !employee.getEmergencyContactNo().isEmpty() && !employee.getDob().isEmpty() && !employee.getUserName().isEmpty() && !employee.getPassword().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())) { + try { + + mUser.setTitleID(getTitleId(employee.getTitle())); + mUser.setFirstName(employee.getFirstName()); + mUser.setLastName(employee.getLastName()); + mUser.setUserName(employee.getUserName()); + mUser.setdOB(convertStringIntoDate(employee.getDob())); + mUser.setEmployeeID(employee.getContactNo()); + 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())); + + } + if (!employee.getDesignation().isEmpty()) { + mUser.setDesignationName(employee.getDesignation()); + + } + if (!isValidAadhar(employee.getAadhaarNo()) && employeeMasterInter.FindEmployeeAadhaar(employee.getAadhaarNo()).equalsIgnoreCase("aadhaarnotexist")) { + mUser.setAadhaarNo(String.valueOf(employee.getAadhaarNo())); + + } + + if (!employee.getPan().isEmpty()) { + mUser.setpAN(employee.getPan()); + + } + mUser.setMaritalStatusID(1); + mUser.setEmailID(employee.getEmail()); + mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); + mUser.setQualificationID(4); + if (!employee.getQualification().isEmpty()) { + mUser.setQualificationID(getQualificationId(employee.getQualification())); + + } + mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); + //mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUser.setCreatedBy("Psmril2"); + //mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); + mUser.setModifiedBy("Psmril2"); + mUser.setStatusID(1); + mUser.setIsSupervisor(false); + mUser.setServiceProviderID(15); + mUser.setPassword(generateStrongPassword(employee.getPassword())); + logger.info("Register_user:" + mUser); + M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); + logger.info("BulkUser:" + bulkUserID); + m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); + m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); + m_userServiceRoleMapping.setCreatedBy("Psmril2"); + m_userServiceRoleMapping.setRoleID(133); + m_userServiceRoleMapping.setProviderServiceMapID(1); + //m_userServiceRoleMapping.setWorkingLocationID(117); + m_userServiceRoleMapping.setIsSanjeevani(false); + m_userServiceRoleMapping.setBlockName("Biswanath"); + String[] villageName = {"Bagijuli"}; + m_userServiceRoleMapping.setVillageName(villageName); + String[] villageID = {"25460"}; + m_userServiceRoleMapping.setVillageID(villageID); + m_userServiceRoleMapping.setBlockID(920); + + mUserDemographics.setUserID(bulkUserID.getUserID()); + mUserDemographics.setCountryID(91); + if (!employee.getCommunity().isEmpty()) { + mUserDemographics.setCommunityID(getCommunityId(employee.getCommunity())); + + } + if (!employee.getReligion().isEmpty()) { + mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); + + } +// mUserDemographics.setReligionID(1); +// mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUserDemographics.setCreatedBy("Psmril2"); + // Permanent Address + 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())); + + } + mUserDemographics.setIsPermanent(false); + 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()); + + } + // correspondence address + if (!employee.getAddressLine1().isEmpty()) { + mUserDemographics.setAddressLine1(employee.getAddressLine1()); + + } + if (!employee.getState().isEmpty()) { + mUserDemographics.setStateID(getStateId(employee.getState())); + + } + mUserDemographics.setIsPresent(false); + if (!employee.getDistrict().isEmpty()) { + mUserDemographics.setDistrictID(getDistrictId(employee.getDistrict())); + + } + if (!employee.getPincode().isEmpty()) { + mUserDemographics.setPinCode(employee.getPincode().toString()); + + } + employeeMasterInter.saveDemography(mUserDemographics); + m_bulkUser.add(mUser); + m_UserDemographics.add(mUserDemographics); + employeeMasterInter.saveRoleMappingeditedData(m_userServiceRoleMapping, authorization); + + } catch (Exception e) { + errorLogs.add("Row :" + (row + 1) + e.getMessage()); + bulkRegistrationErrors_.setRowNumber((row + 1)); + bulkRegistrationErrors_.setUserName(employee.getUserName()); + bulkRegistrationErrors_.setError(validationErrors); + bulkRegistrationErrors.add(bulkRegistrationErrors_); + + + } + } + + } else { + validationErrors.add("Contact No Already exist"); + 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_); + + + } + } + + } else { + validationErrors.add("User Already exist"); + 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_); + + + } + + } + } else { + validationErrors.add("Please Enter UserName"); + 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_); - } - if (!validationErrors.isEmpty()) { - errorLogs.add("Row " + (row + 1) + ": " + String.join(", ", validationErrors)); + } } + } + /** + * Validate employee details. + */ + + + private boolean isValidDate(String dateStr) { try { + String[] parts = dateStr.split("-"); + int year = Integer.parseInt(parts[0]); - M_User1 mUser = new M_User1(); - M_UserDemographics mUserDemographics = new M_UserDemographics(); - - mUser.setTitleID(getTitleId(employee.getTitle())); - mUser.setDesignationID(getDesignationId(employee.getDesignation())); - mUser.setDesignationName("ASHA"); - mUser.setFirstName(employee.getFirstName()); - mUser.setLastName(employee.getLastName()); - mUser.setUserName(employee.getContactNo()); - mUser.setdOB(convertStringIntoDate(employee.getDob())); - mUser.setEmployeeID(employee.getContactNo()); - mUser.setEmergencyContactNo(String.valueOf(employee.getEmergencyContactNo())); - mUser.setContactNo(String.valueOf(employee.getContactNo())); - mUser.setMiddleName(employee.getMiddleName()); - mUser.setAadhaarNo(String.valueOf(employee.getAadhaarNo())); - mUser.setpAN(employee.getPan()); - mUser.setMaritalStatusID(1); - mUser.setEmailID(employee.getEmail()); - mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); - mUser.setQualificationID(getQualificationId(employee.getQualification())); - mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); - mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); - mUser.setIsSupervisor(false); - mUser.setServiceProviderID(15); - mUser.setPassword(generateStrongPassword("Test@123")); - M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); - mUserDemographics.setUserID(bulkUserID.getUserID()); - mUserDemographics.setCountryID(91); - mUserDemographics.setCommunityID(getCommunityId(employee.getCommunity())); - mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); - mUserDemographics.setFathersName(employee.getFatherName()); - mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUserDemographics.setAddressLine1(employee.getAddressLine1()); - mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); - mUserDemographics.setPermStateID(getStateId(employee.getPermanentState())); - mUserDemographics.setPermDistrictID(getDistrictId(employee.getPermanentDistrict())); - mUserDemographics.setIsPermanent(false); - mUserDemographics.setPermPinCode(Integer.valueOf(employee.getPermanentPincode())); - mUserDemographics.setMothersName(employee.getMotherName()); - mUserDemographics.setAddressLine1(employee.getPermanentAddressLine1()); - mUserDemographics.setStateID(getStateId(employee.getState())); - mUserDemographics.setIsPresent(false); - mUserDemographics.setStateID(getStateId(employee.getState())); - mUserDemographics.setDistrictID(getDistrictId(employee.getDistrict())); - mUserDemographics.setPinCode(employee.getPincode().toString()); - employeeMasterInter.saveDemography(mUserDemographics); - m_bulkUser.add(mUser); - m_UserDemographics.add(mUserDemographics); + if (year > 2025) { + return false; // Year should not be greater than 2025 + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate.parse(dateStr, formatter); // Validates if the full date is correct + + return true; // Valid date within range } catch (Exception e) { - errorLogs.add("Row : " + (row + 1) + e.getMessage()); + return false; // Invalid date format or parsing error } + } + private int calculateAge(String dob) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate birthDate = LocalDate.parse(dob, formatter); + // Get current date + LocalDate currentDate = LocalDate.now(); + + // Calculate age + return Period.between(birthDate, currentDate).getYears(); } + private void showLogger(Employee employee) { + logger.info("Title: " + employee.getTitle()); + logger.info("Title Id: " + getTitleId(employee.getTitle())); + logger.info("First Name: " + employee.getFirstName()); + logger.info("Last Name: " + employee.getLastName()); + logger.info("Email: " + employee.getEmail()); + logger.info("Contact No: " + employee.getContactNo()); + logger.info("Emergency Contact No: " + employee.getEmergencyContactNo()); + logger.info("Age: " + employee.getAge()); + logger.info("DOB: " + employee.getDob()); + logger.info("State: " + employee.getState()); + logger.info("State ID: " + getStateId(employee.getState())); + logger.info("District: " + employee.getDistrict()); + logger.info("District ID: " + getDistrictId(employee.getDistrict())); + logger.info("Designation: " + employee.getDesignation()); + logger.info("Designation Id: " + getDesignationId(employee.getDesignation())); + logger.info("Qualification: " + employee.getQualification()); + logger.info("Father Name: " + employee.getFatherName()); + logger.info("Mother Name: " + employee.getMotherName()); + logger.info("Address Line 1: " + employee.getAddressLine1()); + logger.info("Permanent Address: " + employee.getPermanentAddressLine1()); + logger.info("Aadhaar No: " + employee.getAadhaarNo()); + logger.info("PAN: " + employee.getPan()); + logger.info("Gender: " + employee.getGender()); + logger.info("Date of Joining: " + employee.getDateOfJoining()); + logger.info("Religion: " + employee.getReligion()); + logger.info("Community: " + employee.getCommunity()); + logger.info("Pincode: " + employee.getPincode()); + logger.info("Dob_formated: " + convertStringIntoDate(employee.getDob())); + logger.info("doj_formated: " + convertStringIntoDate(employee.getDateOfJoining())); + + } - public int getGenderId(String genderString) { + + private int getGenderId(String genderString) { int genderId = employeeMasterInter.getAllGender() .stream() .filter(gender -> gender.getGenderName().equalsIgnoreCase(genderString)) @@ -225,14 +558,36 @@ public int getGenderId(String genderString) { return genderId; } + public static boolean isNumeric(String str) { + try { + Integer.parseInt(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + - public int getTitleId(String titleString) { - int titleId = employeeMasterInter.getAllTitle() - .stream() - .filter(title -> title.getTitleName().equalsIgnoreCase(titleString)) - .map(M_Title::getTitleID) - .findFirst() - .orElse(0); + private int getTitleId(String titleString) { + int titleId = 0; + + if (!titleString.isEmpty()) { + if (titleString.equalsIgnoreCase("Major") || titleString.equalsIgnoreCase("Madame")) { + titleId = employeeMasterInter.getAllTitle() + .stream() + .filter(title -> title.getTitleName().equalsIgnoreCase(titleString)) + .map(M_Title::getTitleID) + .findFirst() + .orElse(0); + } else { + titleId = employeeMasterInter.getAllTitle() + .stream() + .filter(title -> title.getTitleName().equalsIgnoreCase(titleString + ".")) + .map(M_Title::getTitleID) + .findFirst() + .orElse(0); + } + } return titleId; @@ -260,7 +615,7 @@ public int getCommunityId(String communityString) { public int getQualificationId(String qualificationString) { int qualificationId = employeeMasterInter.getQualification() .stream() - .filter(q -> q.getUserQualificationDesc().equalsIgnoreCase(qualificationString)) + .filter(q -> q.getName().equalsIgnoreCase(qualificationString)) .map(M_Userqualification::getQualificationID) .findFirst() .orElse(0); @@ -271,21 +626,30 @@ public int getQualificationId(String qualificationString) { //Religion public int getReligionStringId(String religionString) { - return employeeMasterInter.getAllReligion() - .stream() - .filter(religion -> religion.getReligionType().equalsIgnoreCase(religionString)) - .map(M_Religion::getReligionID) - .findFirst() - .orElse(0); + if (religionString.equalsIgnoreCase("Not given")) { + return 0; + } else { + return employeeMasterInter.getAllReligion() + .stream() + .filter(religion -> religion.getReligionType().equalsIgnoreCase(religionString)) + .map(M_Religion::getReligionID) + .findFirst() + .orElse(0); + } } public int getDistrictId(String districtName) { - return m_districts.stream() - .filter(m_district -> m_district.getDistrictName().equalsIgnoreCase(districtName)) - .map(M_District::getDistrictID) - .findFirst() - .orElse(0); + if (!districtName.isEmpty()) { + return m_districts.stream() + .filter(m_district -> m_district.getDistrictName().equalsIgnoreCase(districtName)) + .map(M_District::getDistrictID) + .findFirst() + .orElse(0); + } else { + return 0; + } + } @@ -338,13 +702,16 @@ private Map getHeaderMap(Row headerRow) { } - public Date convertStringIntoDate(String dateString) throws ParseException { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime dateTime = LocalDateTime.parse(dateString + " " + "00:00:00", formatter); + public static Date convertStringIntoDate(String date) { + + final long MILLISECONDS_PER_DAY = 86400000L; + final long EPOCH_OFFSET = 2209161600000L; + // Calculate milliseconds since epoch + long javaMillis = (long) (Double.parseDouble(date) * MILLISECONDS_PER_DAY - EPOCH_OFFSET); + + return new Date(javaMillis); - // Convert String to Date - return Date.valueOf(String.valueOf(dateTime)); } @@ -378,5 +745,57 @@ private String toHex(byte[] array) throws NoSuchAlgorithmException { return hex; } + public static boolean isValidAadhar(String aadharNumber) { + if (!Pattern.matches("\\d{12}", aadharNumber)) { + return true; // Must be a 12-digit number + } + return false; + + } + + + public byte[] insertErrorLog() { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Error Log"); + + try { + // **Create Header Row (Only Once)** + Row headerRow = sheet.createRow(0); + headerRow.createCell(0).setCellValue("UserName"); + headerRow.createCell(1).setCellValue("Remark"); + + // **Start inserting data from row 1** + int rowIndex = 1; // Start from row 1 (row 0 is header) + int rowIndex2 = 1; // Start from row 1 (row 0 is header) + logger.info("Error Size" + bulkRegistrationErrors.size()); + for (BulkRegistrationError bulkRegistrationError : bulkRegistrationErrors) { + Row row = sheet.createRow(rowIndex++); + + row.createCell(0).setCellValue(bulkRegistrationError.getUserName()); + row.createCell(1).setCellValue(bulkRegistrationError.getError().toString()); + + + } + + + // **Auto-Size Columns for Better Readability** + sheet.autoSizeColumn(0); + sheet.autoSizeColumn(1); + + // **Write to ByteArrayOutputStream** + workbook.write(baos); + workbook.close(); + + System.out.println("Error log generated successfully!"); + + } catch (IOException e) { + logger.error("IOException" + e.getMessage()); + e.printStackTrace(); + } + + return baos.toByteArray(); + } + } \ No newline at end of file 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 d91d8c7..3378667 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java @@ -110,6 +110,9 @@ ArrayList getEmployeeDetails11(Intege ArrayList getlocationByMapid2(int tempProSerStatMapID, Integer districtID); String FindEmployeeName(String userName); + String FindEmployeeContact(String contactNo); + String FindEmployeeAadhaar(String aadhaarNo); + public M_User1 FindEmployeeName1(String userName); 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 28d5072..a0f1762 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java @@ -638,6 +638,25 @@ public String FindEmployeeName(String userName) { } + @Override + public String FindEmployeeContact(String contactNo) { + M_User1 user = employeeMasterRepoo.findEmployeeByContact(contactNo); + if (user == null) { + return "contactnotexist"; + } else { + return "contactexist"; + } } + + @Override + public String FindEmployeeAadhaar(String aadhaarNo) { + M_User1 user = employeeMasterRepoo.findEmployeeAadhaarNo(aadhaarNo); + if (user == null) { + return "aadhaarnotexist"; + } else { + return "aadhaarexist"; + } + } + @Override public M_User1 FindEmployeeName1(String userName) { diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index 7fe71e4..b9cb53c 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -18,94 +18,101 @@ @Component public class JwtUserIdValidationFilter implements Filter { - private final JwtAuthenticationUtil jwtAuthenticationUtil; - private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); - - public JwtUserIdValidationFilter(JwtAuthenticationUtil jwtAuthenticationUtil) { - this.jwtAuthenticationUtil = jwtAuthenticationUtil; - } - - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) - throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) servletRequest; - HttpServletResponse response = (HttpServletResponse) servletResponse; - - String path = request.getRequestURI(); - String contextPath = request.getContextPath(); - logger.info("JwtUserIdValidationFilter invoked for path: " + path); - - // Log cookies for debugging - Cookie[] cookies = request.getCookies(); - if (cookies != null) { - for (Cookie cookie : cookies) { - if ("userId".equals(cookie.getName())) { - logger.warn("userId found in cookies! Clearing it..."); - clearUserIdCookie(response); // Explicitly remove userId cookie - } - } - } else { - logger.info("No cookies found in the request"); - } - - // Log headers for debugging - String jwtTokenFromHeader = request.getHeader("Jwttoken"); - logger.info("JWT token from header: "); - - // Skip login and public endpoints - if (path.equals(contextPath + "/user/userAuthenticate") - || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") - || path.startsWith(contextPath + "/public")) { - logger.info("Skipping filter for path: " + path); - filterChain.doFilter(servletRequest, servletResponse); - return; - } - - try { - // Retrieve JWT token from cookies - String jwtTokenFromCookie = getJwtTokenFromCookies(request); - logger.info("JWT token from cookie: "); - - // Determine which token (cookie or header) to validate - String jwtToken = jwtTokenFromCookie != null ? jwtTokenFromCookie : jwtTokenFromHeader; - if (jwtToken == null) { - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "JWT token not found in cookies or headers"); - return; - } - - // Validate JWT token and userId - boolean isValid = jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtToken); - - if (isValid) { - // If token is valid, allow the request to proceed - filterChain.doFilter(servletRequest, servletResponse); - } else { - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid JWT token"); - } - } catch (Exception e) { - logger.error("Authorization error: ", e); - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authorization error: "); - } - } - - private String getJwtTokenFromCookies(HttpServletRequest request) { - Cookie[] cookies = request.getCookies(); - if (cookies != null) { - for (Cookie cookie : cookies) { - if (cookie.getName().equals("Jwttoken")) { - return cookie.getValue(); - } - } - } - return null; - } - - private void clearUserIdCookie(HttpServletResponse response) { - Cookie cookie = new Cookie("userId", null); - cookie.setPath("/"); - cookie.setHttpOnly(true); - cookie.setSecure(true); - cookie.setMaxAge(0); // Invalidate the cookie - response.addCookie(cookie); - } + private final JwtAuthenticationUtil jwtAuthenticationUtil; + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + public JwtUserIdValidationFilter(JwtAuthenticationUtil jwtAuthenticationUtil) { + this.jwtAuthenticationUtil = jwtAuthenticationUtil; + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) + throws IOException, ServletException { + HttpServletRequest request = (HttpServletRequest) servletRequest; + HttpServletResponse response = (HttpServletResponse) servletResponse; + + String path = request.getRequestURI(); + String contextPath = request.getContextPath(); + logger.info("JwtUserIdValidationFilter invoked for path: " + path); + + + // Log cookies for debugging + Cookie[] cookies = request.getCookies(); + if (cookies != null) { + for (Cookie cookie : cookies) { + if ("userId".equals(cookie.getName())) { + logger.warn("userId found in cookies! Clearing it..."); + clearUserIdCookie(response); // Explicitly remove userId cookie + } + } + } else { + logger.info("No cookies found in the request"); + } + + // Log headers for debugging + String jwtTokenFromHeader = request.getHeader("Jwttoken"); + logger.info("JWT token from header: "); + + // Skip login and public endpoints + if (path.equals(contextPath + "/user/userAuthenticate") + || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") + || path.startsWith(contextPath + "/public") || + path.startsWith(contextPath + "/swagger") || + path.startsWith(contextPath + "/bulkRegistration") || + path.startsWith(contextPath + "/download-error-sheet") || + path.startsWith(contextPath + "/v3/api-docs") || + path.startsWith(contextPath + "/swagger-ui") || + path.startsWith(contextPath + "/swagger-resources")) { + logger.info("Skipping filter for path: " + path); + filterChain.doFilter(servletRequest, servletResponse); + return; + } + + try { + // Retrieve JWT token from cookies + String jwtTokenFromCookie = getJwtTokenFromCookies(request); + logger.info("JWT token from cookie: "); + + // Determine which token (cookie or header) to validate + String jwtToken = jwtTokenFromCookie != null ? jwtTokenFromCookie : jwtTokenFromHeader; + if (jwtToken == null) { + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "JWT token not found in cookies or headers"); + return; + } + + // Validate JWT token and userId + boolean isValid = jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtToken); + + if (isValid) { + // If token is valid, allow the request to proceed + filterChain.doFilter(servletRequest, servletResponse); + } else { + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid JWT token"); + } + } catch (Exception e) { + logger.error("Authorization error: ", e); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authorization error: "); + } + } + + private String getJwtTokenFromCookies(HttpServletRequest request) { + Cookie[] cookies = request.getCookies(); + if (cookies != null) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals("Jwttoken")) { + return cookie.getValue(); + } + } + } + return null; + } + + private void clearUserIdCookie(HttpServletResponse response) { + Cookie cookie = new Cookie("userId", null); + cookie.setPath("/"); + cookie.setHttpOnly(true); + cookie.setSecure(true); + cookie.setMaxAge(0); // Invalidate the cookie + response.addCookie(cookie); + } } From 128c8f91fbbf124c503146dc674ad9efe6049f7b Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 19 Jun 2025 12:05:53 +0530 Subject: [PATCH 05/44] add userName and password in Bulk registration --- .../controller/bulkRegistration/BulkRegistrationController.java | 1 + .../service/bulkRegistration/BulkRegistrationServiceImpl.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index fafa4d2..2f46481 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -16,6 +16,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; 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 56f9a26..007559d 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -86,6 +86,8 @@ public void registerBulkUser(String xml, String authorization) { } catch (Exception e) { logger.error("Exception:" + e.getMessage()); + errorLogs.add("Data is invalid or empty"); + } From 5cd719df6abd3411dd071306c62accc59fe377ab Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 19 Jun 2025 19:56:59 +0530 Subject: [PATCH 06/44] remove unwanted line --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5b69d7a..622c745 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,6 @@ 1.2.0.Final 1.16.18 ${ENV_VAR} - target/classes/application.properties target/classes/admin_${environment}.properties From 110fa5907b2b08fe96afeacef6901597746b1cda Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Sat, 21 Jun 2025 11:03:29 +0530 Subject: [PATCH 07/44] fix code --- .../service/bulkRegistration/BulkRegistrationServiceImpl.java | 1 - 1 file changed, 1 deletion(-) 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 007559d..2a69870 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -351,7 +351,6 @@ private void saveUserUser(Employee employee, Integer row, String authorization) m_userServiceRoleMapping.setRoleID(133); m_userServiceRoleMapping.setProviderServiceMapID(1); //m_userServiceRoleMapping.setWorkingLocationID(117); - m_userServiceRoleMapping.setIsSanjeevani(false); m_userServiceRoleMapping.setBlockName("Biswanath"); String[] villageName = {"Bagijuli"}; m_userServiceRoleMapping.setVillageName(villageName); From b1a893f823fed71a18ce01d1346929e19850ac33 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 21 Aug 2025 20:36:03 +0530 Subject: [PATCH 08/44] fix code --- pom.xml | 6 +++--- .../bulkRegistration/BulkRegistrationServiceImpl.java | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 622c745..c74cc29 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.iemr.admin - admin-api - 3.1.0 + adminapi + v3.1.0 war Admin-API Admin Page @@ -279,7 +279,7 @@ - ${artifactId}-${version} + adminapi-v3.0.0 org.owasp 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 2a69870..4d9e105 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -69,6 +69,8 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { @Override public void registerBulkUser(String xml, String authorization) { try { + xml = escapeXmlSpecialChars(xml); + EmployeeList employeeList = employeeXmlService.parseXml(xml); if (!employeeList.getEmployees().isEmpty()) { logger.info("employee_list" + employeeList.getEmployees().toString()); @@ -92,6 +94,10 @@ public void registerBulkUser(String xml, String authorization) { } + 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+;)", "&"); + } private void saveUserUser(Employee employee, Integer row, String authorization) throws Exception { From b67332f64cbe4aed62e29c370ed4d2b8dd60210c Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 21 Aug 2025 21:26:57 +0530 Subject: [PATCH 09/44] fix code --- src/main/resources/application.properties | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e65d5b3..007cdc5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -74,3 +74,33 @@ swymed-edituser-url=swymed-base-url/SwymedWebApi/api/Contact calibrationPageSize=5 biological-screening-device-url=http://localhost:8096/ezdx-hub-connect-srv + + +server.port=8082 +# local env +# DB Connections +spring.datasource.url=jdbc:mysql://devbox.bizbrolly.com:3306/db_iemr +spring.datasource.username=root +spring.datasource.password=BizDev@24BB +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +callcentre-server-ip=10.208.122.99 + +videoConsultation-apikey= +videoConsultation-base-url=https://psmri.swymed.com:9274 + +### Redis IP +spring.redis.host=localhost + +common-url=http://localhost:8083/ + +springdoc.api-docs.enabled=true +springdoc.swagger-ui.enabled=true + +logging.path=logs/ +logging.file.name=logs/admin-api.log + +jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret + +cors.allowed-origins=http://devbox.bizbrolly.com:*,http://localhost:* +cors.allowed-origin=http://devbox.bizbrolly.com:*,http://localhost:* From bdde896c7852853387f0b8bc5de4c2521d09e2f2 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 21 Aug 2025 21:33:20 +0530 Subject: [PATCH 10/44] fix code --- src/main/environment/admin_example.properties | 2 +- src/main/resources/application.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/environment/admin_example.properties b/src/main/environment/admin_example.properties index f510b42..d24ad85 100644 --- a/src/main/environment/admin_example.properties +++ b/src/main/environment/admin_example.properties @@ -25,4 +25,4 @@ logging.file.name=logs/admin-api.log jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret -cors.allowed-origins=http://localhost:* +cors.allowed-origin=http://devbox.bizbrolly.com:*,http://localhost:* diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 007cdc5..dab7a6e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -103,4 +103,4 @@ logging.file.name=logs/admin-api.log jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret cors.allowed-origins=http://devbox.bizbrolly.com:*,http://localhost:* -cors.allowed-origin=http://devbox.bizbrolly.com:*,http://localhost:* +cors.allowed-origin=http://devbox.bizbrolly.com:4901,http://localhost:* From 5315e05257632f394a86b0ee2a28d6c24e0bd03d Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 21 Aug 2025 21:38:12 +0530 Subject: [PATCH 11/44] fix code --- src/main/java/com/iemr/admin/config/CorsConfig.java | 2 +- .../bulkRegistration/BulkRegistrationController.java | 4 +--- src/main/java/com/iemr/admin/utils/FilterConfig.java | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/iemr/admin/config/CorsConfig.java b/src/main/java/com/iemr/admin/config/CorsConfig.java index f43d8ef..728ce29 100644 --- a/src/main/java/com/iemr/admin/config/CorsConfig.java +++ b/src/main/java/com/iemr/admin/config/CorsConfig.java @@ -9,7 +9,7 @@ @Configuration public class CorsConfig implements WebMvcConfigurer { - @Value("${cors.allowed-origins}") + @Value("${cors.allowed-origin}") private String allowedOrigins; @Override diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 2f46481..700a767 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -39,7 +39,6 @@ public class BulkRegistrationController { private LocationMasterServiceInter locationMasterServiceInter; private Map response = new HashMap<>(); - @CrossOrigin() @PostMapping(value = "/bulkRegistration", headers = "Authorization") public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization) { bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); @@ -66,8 +65,7 @@ public ResponseEntity> registerBulkUser(@RequestBody String } - @CrossOrigin() - @GetMapping("/download-error-sheet") + @GetMapping(value = "/download-error-sheet", headers = "Authorization") public ResponseEntity downloadErrorSheet() { try { byte[] fileContent = bulkRegistrationServiceimpl.insertErrorLog(); diff --git a/src/main/java/com/iemr/admin/utils/FilterConfig.java b/src/main/java/com/iemr/admin/utils/FilterConfig.java index 9c92095..b51f29d 100644 --- a/src/main/java/com/iemr/admin/utils/FilterConfig.java +++ b/src/main/java/com/iemr/admin/utils/FilterConfig.java @@ -9,7 +9,7 @@ @Configuration public class FilterConfig { - @Value("${cors.allowed-origins}") + @Value("${cors.allowed-origin}") private String allowedOrigins; @Bean From 486d412559c4daa4833ee7f61fa981ad1cd26db1 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 21 Aug 2025 21:43:05 +0530 Subject: [PATCH 12/44] fix code --- .../java/com/iemr/admin/utils/JwtUserIdValidationFilter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index 64c89a9..a571609 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -76,6 +76,8 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo if (path.equals(contextPath + "/user/userAuthenticate") || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") || path.startsWith(contextPath + "/swagger-ui") + || path.startsWith(contextPath + "/bulkRegistration") + || path.startsWith(contextPath + "/download-error-sheet") || path.startsWith(contextPath + "/v3/api-docs") || path.startsWith(contextPath + "/user/refreshToken") || path.startsWith(contextPath + "/public")) { From 4e5dab6bcd83ec9e855179a2c1fa49d80c2d6804 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 21 Aug 2025 21:57:58 +0530 Subject: [PATCH 13/44] fix code --- .../BulkRegistrationServiceImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 4d9e105..6eb2388 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -340,10 +340,10 @@ private void saveUserUser(Employee employee, Integer row, String authorization) } mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); - //mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUser.setCreatedBy("Psmril2"); - //mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); - mUser.setModifiedBy("Psmril2"); + mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); +// mUser.setCreatedBy("Psmril2"); + mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); +// mUser.setModifiedBy("Psmril2"); mUser.setStatusID(1); mUser.setIsSupervisor(false); mUser.setServiceProviderID(15); @@ -353,10 +353,10 @@ private void saveUserUser(Employee employee, Integer row, String authorization) logger.info("BulkUser:" + bulkUserID); m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); - m_userServiceRoleMapping.setCreatedBy("Psmril2"); - m_userServiceRoleMapping.setRoleID(133); + m_userServiceRoleMapping.setCreatedBy(jwtUtil.extractUsername(authorization)); + m_userServiceRoleMapping.setRoleID(122); m_userServiceRoleMapping.setProviderServiceMapID(1); - //m_userServiceRoleMapping.setWorkingLocationID(117); +// m_userServiceRoleMapping.setWorkingLocationID(117); m_userServiceRoleMapping.setBlockName("Biswanath"); String[] villageName = {"Bagijuli"}; m_userServiceRoleMapping.setVillageName(villageName); From cd7f5678e2258f70707a47323d8600d29a065bb2 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 21 Aug 2025 22:05:29 +0530 Subject: [PATCH 14/44] fix code --- .../bulkRegistration/BulkRegistrationServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 6eb2388..c7e0cb0 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -340,10 +340,10 @@ private void saveUserUser(Employee employee, Integer row, String authorization) } mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); - mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); -// mUser.setCreatedBy("Psmril2"); - mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); -// mUser.setModifiedBy("Psmril2"); + //mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUser.setCreatedBy("Psmril2"); + //mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); + mUser.setModifiedBy("Psmril2"); mUser.setStatusID(1); mUser.setIsSupervisor(false); mUser.setServiceProviderID(15); @@ -353,7 +353,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization) logger.info("BulkUser:" + bulkUserID); m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); - m_userServiceRoleMapping.setCreatedBy(jwtUtil.extractUsername(authorization)); + m_userServiceRoleMapping.setCreatedBy("Psmril2"); m_userServiceRoleMapping.setRoleID(122); m_userServiceRoleMapping.setProviderServiceMapID(1); // m_userServiceRoleMapping.setWorkingLocationID(117); From f06d0776813d97c84b5bb6c53cf5cb604066ba41 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 28 Aug 2025 10:47:10 +0530 Subject: [PATCH 15/44] fix code --- .../BulkRegistrationServiceImpl.java | 12 +++++------- .../iemr/admin/utils/JwtUserIdValidationFilter.java | 2 -- 2 files changed, 5 insertions(+), 9 deletions(-) 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 c7e0cb0..6630aef 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -340,10 +340,8 @@ private void saveUserUser(Employee employee, Integer row, String authorization) } mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); - //mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUser.setCreatedBy("Psmril2"); - //mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); - mUser.setModifiedBy("Psmril2"); + mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); mUser.setStatusID(1); mUser.setIsSupervisor(false); mUser.setServiceProviderID(15); @@ -353,7 +351,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization) logger.info("BulkUser:" + bulkUserID); m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); - m_userServiceRoleMapping.setCreatedBy("Psmril2"); + m_userServiceRoleMapping.setCreatedBy(jwtUtil.extractUsername(authorization)); m_userServiceRoleMapping.setRoleID(122); m_userServiceRoleMapping.setProviderServiceMapID(1); // m_userServiceRoleMapping.setWorkingLocationID(117); @@ -375,8 +373,8 @@ private void saveUserUser(Employee employee, Integer row, String authorization) } // mUserDemographics.setReligionID(1); -// mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUserDemographics.setCreatedBy("Psmril2"); + mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); +// mUserDemographics.setCreatedBy("Psmril2"); // Permanent Address if (!employee.getPermanentAddressLine1().isEmpty()) { mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index a571609..64c89a9 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -76,8 +76,6 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo if (path.equals(contextPath + "/user/userAuthenticate") || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") || path.startsWith(contextPath + "/swagger-ui") - || path.startsWith(contextPath + "/bulkRegistration") - || path.startsWith(contextPath + "/download-error-sheet") || path.startsWith(contextPath + "/v3/api-docs") || path.startsWith(contextPath + "/user/refreshToken") || path.startsWith(contextPath + "/public")) { From 84b679af82098d8e87d9351da3b556e45713d844 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 28 Aug 2025 16:42:03 +0530 Subject: [PATCH 16/44] fix code --- src/main/environment/admin_example.properties | 2 +- src/main/java/com/iemr/admin/config/CorsConfig.java | 2 +- src/main/java/com/iemr/admin/utils/FilterConfig.java | 2 +- src/main/resources/application.properties | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/environment/admin_example.properties b/src/main/environment/admin_example.properties index d24ad85..f510b42 100644 --- a/src/main/environment/admin_example.properties +++ b/src/main/environment/admin_example.properties @@ -25,4 +25,4 @@ logging.file.name=logs/admin-api.log jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret -cors.allowed-origin=http://devbox.bizbrolly.com:*,http://localhost:* +cors.allowed-origins=http://localhost:* diff --git a/src/main/java/com/iemr/admin/config/CorsConfig.java b/src/main/java/com/iemr/admin/config/CorsConfig.java index 728ce29..f43d8ef 100644 --- a/src/main/java/com/iemr/admin/config/CorsConfig.java +++ b/src/main/java/com/iemr/admin/config/CorsConfig.java @@ -9,7 +9,7 @@ @Configuration public class CorsConfig implements WebMvcConfigurer { - @Value("${cors.allowed-origin}") + @Value("${cors.allowed-origins}") private String allowedOrigins; @Override diff --git a/src/main/java/com/iemr/admin/utils/FilterConfig.java b/src/main/java/com/iemr/admin/utils/FilterConfig.java index b51f29d..9c92095 100644 --- a/src/main/java/com/iemr/admin/utils/FilterConfig.java +++ b/src/main/java/com/iemr/admin/utils/FilterConfig.java @@ -9,7 +9,7 @@ @Configuration public class FilterConfig { - @Value("${cors.allowed-origin}") + @Value("${cors.allowed-origins}") private String allowedOrigins; @Bean diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index dab7a6e..34fc0b5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -102,5 +102,4 @@ logging.file.name=logs/admin-api.log jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret -cors.allowed-origins=http://devbox.bizbrolly.com:*,http://localhost:* -cors.allowed-origin=http://devbox.bizbrolly.com:4901,http://localhost:* +cors.allowed-origins=http://localhost:* From 7b123e922e5bab3ae48f4ce4bdcf2a9c9e382fa2 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 28 Aug 2025 16:44:24 +0530 Subject: [PATCH 17/44] fix code --- src/main/environment/admin_example.properties | 4 ++-- src/main/resources/application.properties | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/environment/admin_example.properties b/src/main/environment/admin_example.properties index f510b42..b86b64d 100644 --- a/src/main/environment/admin_example.properties +++ b/src/main/environment/admin_example.properties @@ -2,8 +2,8 @@ server.port=8082 # local env # DB Connections spring.datasource.url=jdbc:mysql://localhost:3306/db_iemr -spring.datasource.username=root -spring.datasource.password=1234 +spring.datasource.username= +spring.datasource.password= spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver callcentre-server-ip=10.208.122.99 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 34fc0b5..5acdbbc 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -79,9 +79,9 @@ biological-screening-device-url=http://localhost:8096/ezdx-hub-connect-srv server.port=8082 # local env # DB Connections -spring.datasource.url=jdbc:mysql://devbox.bizbrolly.com:3306/db_iemr -spring.datasource.username=root -spring.datasource.password=BizDev@24BB +spring.datasource.url=jdbc:mysql://localhost:3306/db_iemr +spring.datasource.username= +spring.datasource.password= spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver callcentre-server-ip=10.208.122.99 From a28294f23fa9e898487c76cccc1818dc1c218a35 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 28 Aug 2025 16:45:27 +0530 Subject: [PATCH 18/44] fix code --- src/main/environment/admin_example.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/environment/admin_example.properties b/src/main/environment/admin_example.properties index b86b64d..f510b42 100644 --- a/src/main/environment/admin_example.properties +++ b/src/main/environment/admin_example.properties @@ -2,8 +2,8 @@ server.port=8082 # local env # DB Connections spring.datasource.url=jdbc:mysql://localhost:3306/db_iemr -spring.datasource.username= -spring.datasource.password= +spring.datasource.username=root +spring.datasource.password=1234 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver callcentre-server-ip=10.208.122.99 From 093ba26f0795f40810518bf0e12b55d8ebfd4154 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 28 Aug 2025 16:46:30 +0530 Subject: [PATCH 19/44] fix code --- src/main/resources/application.properties | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 5acdbbc..70d7045 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -75,15 +75,6 @@ swymed-edituser-url=swymed-base-url/SwymedWebApi/api/Contact calibrationPageSize=5 biological-screening-device-url=http://localhost:8096/ezdx-hub-connect-srv - -server.port=8082 -# local env -# DB Connections -spring.datasource.url=jdbc:mysql://localhost:3306/db_iemr -spring.datasource.username= -spring.datasource.password= -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver - callcentre-server-ip=10.208.122.99 videoConsultation-apikey= From 8820fe2be0b8cbcd8b8f1dd794695e6b529b8b47 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 11:42:23 +0530 Subject: [PATCH 20/44] Httpheader content disposition changed --- .../EmployeeSignatureController.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index bd4a62d..1d5b039 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -21,6 +21,8 @@ */ package com.iemr.admin.controller.employeemaster; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Base64; import org.slf4j.Logger; @@ -30,8 +32,9 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; - +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -39,7 +42,6 @@ import com.iemr.admin.data.employeemaster.EmployeeSignature; import com.iemr.admin.service.employeemaster.EmployeeSignatureServiceImpl; -import com.iemr.admin.utils.mapper.InputMapper; import com.iemr.admin.utils.response.OutputResponse; import io.swagger.v3.oas.annotations.Operation; @@ -54,12 +56,10 @@ public class EmployeeSignatureController { @Autowired EmployeeSignatureServiceImpl employeeSignatureServiceImpl; - private InputMapper inputMapper = new InputMapper(); - private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); @Operation(summary = "Upload") - @RequestMapping(value = "/upload", headers = "Authorization", method = { RequestMethod.POST }, produces = { + @PostMapping(value = "/upload", headers = "Authorization", produces = { "application/json" }) public String uploadFile(@RequestBody EmployeeSignature emp) { OutputResponse response = new OutputResponse(); @@ -83,21 +83,22 @@ public String uploadFile(@RequestBody EmployeeSignature emp) { } @Operation(summary = "User id") - @RequestMapping(value = "/{userID}", headers = "Authorization", method = { RequestMethod.GET }) + @GetMapping(value = "/{userID}", headers = "Authorization") public ResponseEntity fetchFile(@PathVariable("userID") Long userID) throws Exception { - OutputResponse response = new OutputResponse(); logger.debug("File download for userID" + userID); try { EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID); HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, - "inline; filename=\"" + userSignID.getFileName() + "\""); - responseHeaders.set("filename", userSignID.getFileName()); - - return ResponseEntity.ok().contentType(MediaType.parseMediaType(userSignID.getFileType())) - .headers(responseHeaders).body(userSignID.getSignature()); + String fileName = URLEncoder.encode(userSignID.getFileName(), StandardCharsets.UTF_8); + responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\""); + responseHeaders.set("filename", fileName); + + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType(userSignID.getFileType())) // or MediaType.APPLICATION_PDF + .headers(responseHeaders) + .body(userSignID.getSignature()); } catch (Exception e) { logger.error("Unexpected error:", e); From 2aab70ebdc0a070340416e903383c21739a10c3f Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 12:05:37 +0530 Subject: [PATCH 21/44] Coderabbitai comments adrressed --- .../EmployeeSignatureController.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index 1d5b039..dcf7868 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -21,7 +21,6 @@ */ package com.iemr.admin.controller.employeemaster; -import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -29,7 +28,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.PropertySource; +import org.springframework.http.ContentDisposition; import org.springframework.http.HttpHeaders; +import org.springframework.http.InvalidMediaTypeException; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -91,14 +92,19 @@ public ResponseEntity fetchFile(@PathVariable("userID") Long userID) thr EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID); HttpHeaders responseHeaders = new HttpHeaders(); - String fileName = URLEncoder.encode(userSignID.getFileName(), StandardCharsets.UTF_8); - responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\""); - responseHeaders.set("filename", fileName); - - return ResponseEntity.ok() - .contentType(MediaType.parseMediaType(userSignID.getFileType())) // or MediaType.APPLICATION_PDF - .headers(responseHeaders) - .body(userSignID.getSignature()); + ContentDisposition contentDisposition = ContentDisposition.attachment() + .filename(userSignID.getFileName(), StandardCharsets.UTF_8).build(); + responseHeaders.setContentDisposition(contentDisposition); + + MediaType mediaType; + try { + mediaType = MediaType.parseMediaType(userSignID.getFileType()); + } catch (InvalidMediaTypeException | NullPointerException ex) { + mediaType = MediaType.APPLICATION_OCTET_STREAM; + } + + return ResponseEntity.ok().contentType(mediaType).headers(responseHeaders) + .contentLength(userSignID.getSignature().length).body(userSignID.getSignature()); } catch (Exception e) { logger.error("Unexpected error:", e); From 20eaaed3ac31eb6df053aa6bdc3ab32944abb3b8 Mon Sep 17 00:00:00 2001 From: ravishanigarapu <133210792+ravishanigarapu@users.noreply.github.com> Date: Tue, 2 Sep 2025 13:19:24 +0530 Subject: [PATCH 22/44] Httpheader content disposition changed (#100) * Httpheader content disposition changed * Coderabbitai comments adrressed --- .../EmployeeSignatureController.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index bd4a62d..dcf7868 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -21,17 +21,21 @@ */ package com.iemr.admin.controller.employeemaster; +import java.nio.charset.StandardCharsets; import java.util.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.PropertySource; +import org.springframework.http.ContentDisposition; import org.springframework.http.HttpHeaders; +import org.springframework.http.InvalidMediaTypeException; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; - +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -39,7 +43,6 @@ import com.iemr.admin.data.employeemaster.EmployeeSignature; import com.iemr.admin.service.employeemaster.EmployeeSignatureServiceImpl; -import com.iemr.admin.utils.mapper.InputMapper; import com.iemr.admin.utils.response.OutputResponse; import io.swagger.v3.oas.annotations.Operation; @@ -54,12 +57,10 @@ public class EmployeeSignatureController { @Autowired EmployeeSignatureServiceImpl employeeSignatureServiceImpl; - private InputMapper inputMapper = new InputMapper(); - private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); @Operation(summary = "Upload") - @RequestMapping(value = "/upload", headers = "Authorization", method = { RequestMethod.POST }, produces = { + @PostMapping(value = "/upload", headers = "Authorization", produces = { "application/json" }) public String uploadFile(@RequestBody EmployeeSignature emp) { OutputResponse response = new OutputResponse(); @@ -83,21 +84,27 @@ public String uploadFile(@RequestBody EmployeeSignature emp) { } @Operation(summary = "User id") - @RequestMapping(value = "/{userID}", headers = "Authorization", method = { RequestMethod.GET }) + @GetMapping(value = "/{userID}", headers = "Authorization") public ResponseEntity fetchFile(@PathVariable("userID") Long userID) throws Exception { - OutputResponse response = new OutputResponse(); logger.debug("File download for userID" + userID); try { EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID); HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, - "inline; filename=\"" + userSignID.getFileName() + "\""); - responseHeaders.set("filename", userSignID.getFileName()); - - return ResponseEntity.ok().contentType(MediaType.parseMediaType(userSignID.getFileType())) - .headers(responseHeaders).body(userSignID.getSignature()); + ContentDisposition contentDisposition = ContentDisposition.attachment() + .filename(userSignID.getFileName(), StandardCharsets.UTF_8).build(); + responseHeaders.setContentDisposition(contentDisposition); + + MediaType mediaType; + try { + mediaType = MediaType.parseMediaType(userSignID.getFileType()); + } catch (InvalidMediaTypeException | NullPointerException ex) { + mediaType = MediaType.APPLICATION_OCTET_STREAM; + } + + return ResponseEntity.ok().contentType(mediaType).headers(responseHeaders) + .contentLength(userSignID.getSignature().length).body(userSignID.getSignature()); } catch (Exception e) { logger.error("Unexpected error:", e); From e04b9e5bcb6483a8d5c61c88de016b7887bb20ac Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 14:34:34 +0530 Subject: [PATCH 23/44] Compile error resolved --- src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java b/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java index 0605ec3..8e6c4b9 100644 --- a/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java +++ b/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java @@ -8,7 +8,7 @@ import com.iemr.admin.data.user.M_User; @Repository -public interface UserLoginRepo extends CrudRepository { +public interface UserLoginRepo extends CrudRepository { @Query(" SELECT u FROM M_User u WHERE u.userID = :userID AND u.Deleted = false ") public M_User getUserByUserID(@Param("userID") Long userID); From 0addca8678de77d44418e9415476c486bb7f2b56 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 2 Sep 2025 15:05:57 +0530 Subject: [PATCH 24/44] fix code --- src/main/resources/application.properties | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 70d7045..f86b6b6 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -91,6 +91,4 @@ springdoc.swagger-ui.enabled=true logging.path=logs/ logging.file.name=logs/admin-api.log -jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret - cors.allowed-origins=http://localhost:* From adc946deac81e68f741f3b67bc265ad99125c545 Mon Sep 17 00:00:00 2001 From: ravishanigarapu <133210792+ravishanigarapu@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:52:00 +0530 Subject: [PATCH 25/44] Main branch changes missed (#102) --- src/main/java/com/iemr/admin/data/user/M_User.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/admin/data/user/M_User.java b/src/main/java/com/iemr/admin/data/user/M_User.java index a35fb39..1b06de4 100644 --- a/src/main/java/com/iemr/admin/data/user/M_User.java +++ b/src/main/java/com/iemr/admin/data/user/M_User.java @@ -263,7 +263,7 @@ public void setEmergencyContactNo(String emergencyContactNo) { EmergencyContactNo = emergencyContactNo; } - public boolean isIsSupervisor() { + public Boolean isIsSupervisor() { return IsSupervisor; } @@ -272,7 +272,7 @@ public void setIsSupervisor(boolean isSupervisor) { } public boolean isDeleted() { - return Deleted; + return Boolean.TRUE.equals(Deleted); } public void setDeleted(boolean deleted) { From 4e3a3042e2eb7d42940777150233d71549ebbf5e Mon Sep 17 00:00:00 2001 From: ravishanigarapu <133210792+ravishanigarapu@users.noreply.github.com> Date: Tue, 2 Sep 2025 20:09:28 +0530 Subject: [PATCH 26/44] Feature/signaturerelease (#103) * Main branch changes missed * Signature file changed --- .../EmployeeSignatureController.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index dcf7868..2156cf7 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -21,6 +21,7 @@ */ package com.iemr.admin.controller.employeemaster; +import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -92,19 +93,25 @@ public ResponseEntity fetchFile(@PathVariable("userID") Long userID) thr EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID); HttpHeaders responseHeaders = new HttpHeaders(); - ContentDisposition contentDisposition = ContentDisposition.attachment() - .filename(userSignID.getFileName(), StandardCharsets.UTF_8).build(); - responseHeaders.setContentDisposition(contentDisposition); + String fileName = URLEncoder.encode(userSignID.getFileName(), StandardCharsets.UTF_8); + + responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename=\"" + fileName + "\"; filename*=UTF-8''" + fileName); MediaType mediaType; try { - mediaType = MediaType.parseMediaType(userSignID.getFileType()); - } catch (InvalidMediaTypeException | NullPointerException ex) { - mediaType = MediaType.APPLICATION_OCTET_STREAM; + mediaType = MediaType.parseMediaType(userSignID.getFileType()); + } catch (InvalidMediaTypeException | NullPointerException e) { + mediaType = MediaType.APPLICATION_OCTET_STREAM; } - return ResponseEntity.ok().contentType(mediaType).headers(responseHeaders) - .contentLength(userSignID.getSignature().length).body(userSignID.getSignature()); + byte[] fileBytes = userSignID.getSignature(); // MUST be byte[] + + return ResponseEntity.ok() + .headers(responseHeaders) + .contentType(mediaType) + .contentLength(fileBytes.length) + .body(fileBytes); } catch (Exception e) { logger.error("Unexpected error:", e); From 875e40a96d524579371e0d4fd13b540acb58e766 Mon Sep 17 00:00:00 2001 From: ravishanigarapu <133210792+ravishanigarapu@users.noreply.github.com> Date: Wed, 10 Sep 2025 12:17:10 +0530 Subject: [PATCH 27/44] Feature/signaturerelease (#104) * Main branch changes missed * Signature file changed * Created new endpoint for Active and DeActive Employee Signature * coderabbit comments addressed --- .../EmployeeMasterController.java | 5 +-- .../EmployeeSignatureController.java | 37 ++++++++++++------- .../admin/data/employeemaster/M_User1.java | 24 +++++++++++- .../EmployeeMasterServiceImpl.java | 19 +++++++++- .../EmployeeSignatureService.java | 2 + .../EmployeeSignatureServiceImpl.java | 14 +++++++ 6 files changed, 82 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeMasterController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeMasterController.java index b02e2c9..227baf2 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeMasterController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeMasterController.java @@ -30,9 +30,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.PropertySource; import org.springframework.http.MediaType; - import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -40,6 +38,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.iemr.admin.data.employeemaster.M_Community; import com.iemr.admin.data.employeemaster.M_Designation; import com.iemr.admin.data.employeemaster.M_Gender; @@ -1051,7 +1050,7 @@ public String getEmployeeByDesignation(@RequestBody String getDesignation) { ArrayList employeeBydesiganation = employeeMasterInter.getEmployeeByDesiganationID( employeeMaster.getDesignationID(), employeeMaster1.getServiceProviderID()); - + response.setResponse(employeeBydesiganation.toString()); } catch (Exception e) { diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index 2156cf7..79f7f72 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -47,6 +47,7 @@ import com.iemr.admin.utils.response.OutputResponse; import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.HttpServletRequest; @PropertySource("classpath:application.properties") @@ -93,26 +94,19 @@ public ResponseEntity fetchFile(@PathVariable("userID") Long userID) thr EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID); HttpHeaders responseHeaders = new HttpHeaders(); - String fileName = URLEncoder.encode(userSignID.getFileName(), StandardCharsets.UTF_8); - - responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, - "attachment; filename=\"" + fileName + "\"; filename*=UTF-8''" + fileName); + ContentDisposition cd = ContentDisposition.attachment() + .filename(userSignID.getFileName(), StandardCharsets.UTF_8).build(); + responseHeaders.setContentDisposition(cd); MediaType mediaType; try { - mediaType = MediaType.parseMediaType(userSignID.getFileType()); + mediaType = MediaType.parseMediaType(userSignID.getFileType()); } catch (InvalidMediaTypeException | NullPointerException e) { - mediaType = MediaType.APPLICATION_OCTET_STREAM; + mediaType = MediaType.APPLICATION_OCTET_STREAM; } - byte[] fileBytes = userSignID.getSignature(); // MUST be byte[] - - return ResponseEntity.ok() - .headers(responseHeaders) - .contentType(mediaType) - .contentLength(fileBytes.length) - .body(fileBytes); - + return ResponseEntity.ok().headers(responseHeaders).contentType(mediaType).contentLength(fileBytes.length) + .body(fileBytes); } catch (Exception e) { logger.error("Unexpected error:", e); logger.error("File download for userID failed with exception " + e.getMessage(), e); @@ -142,4 +136,19 @@ public String existFile(@PathVariable("userID") Long userID) throws Exception { logger.debug("response" + response); return response.toString(); } + + @Operation(summary = "Active or DeActive user Signature") + @PostMapping(value = "/activateOrdeActivateSignature", headers = "Authorization", produces = { "application/json" }) + public String ActivateUser(@RequestBody String activateUser, HttpServletRequest request) { + OutputResponse response = new OutputResponse(); + try { + EmployeeSignature empSignature = employeeSignatureServiceImpl.updateUserSignatureStatus(activateUser); + boolean active = empSignature.getDeleted() == null ? false : !empSignature.getDeleted(); + response.setResponse("{\"userID\":" + empSignature.getUserID() + ",\"active\":" + active + "}"); + } catch (Exception e) { + logger.error("Active or Deactivate User Signature failed with exception " + e.getMessage(), e); + response.setError(e); + } + return response.toString(); + } } diff --git a/src/main/java/com/iemr/admin/data/employeemaster/M_User1.java b/src/main/java/com/iemr/admin/data/employeemaster/M_User1.java index 5c265f8..1c319a8 100644 --- a/src/main/java/com/iemr/admin/data/employeemaster/M_User1.java +++ b/src/main/java/com/iemr/admin/data/employeemaster/M_User1.java @@ -202,10 +202,32 @@ public class M_User1{ @Expose private M_Maritalstatus m_Maritalstatus; + @Expose + @Transient + private String signatureStatus; + /*@OneToOne(mappedBy="m_user") private M_UserLangMapping m_UserLangMapping1;*/ - // new field for rate-limit, failed authentication + public String getSignatureStatus() { + return signatureStatus; + } + + public void setSignatureStatus(String signatureStatus) { + this.signatureStatus = signatureStatus; + } + + + + + + + + + + + + // new field for rate-limit, failed authentication @Expose @Column(name = "failed_attempt", insertable = false) private Integer failedAttempt; 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 10d8440..62593f1 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java @@ -59,6 +59,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonParser; import com.iemr.admin.data.blocking.M_Providerservicemapping_Blocking; +import com.iemr.admin.data.employeemaster.EmployeeSignature; import com.iemr.admin.data.employeemaster.M_Community; import com.iemr.admin.data.employeemaster.M_Gender; import com.iemr.admin.data.employeemaster.M_ProviderServiceMap1; @@ -80,6 +81,7 @@ import com.iemr.admin.repo.blocking.MProviderservicemappingBlockingRepo; import com.iemr.admin.repo.employeemaster.EmployeeMasterRepo; import com.iemr.admin.repo.employeemaster.EmployeeMasterRepoo; +import com.iemr.admin.repo.employeemaster.EmployeeSignatureRepo; import com.iemr.admin.repo.employeemaster.M_CommunityRepo; import com.iemr.admin.repo.employeemaster.M_GenderRepo; import com.iemr.admin.repo.employeemaster.M_ProviderServiceMap1Repo; @@ -104,7 +106,6 @@ import com.iemr.admin.utils.mapper.InputMapper; import com.iemr.admin.utils.response.OutputResponse; -import jakarta.servlet.http.HttpServletRequest; @Service public class EmployeeMasterServiceImpl implements EmployeeMasterInter { @@ -190,6 +191,9 @@ public void setConfigProperties(ConfigProperties configProperties) { @Autowired M_ServiceMasterRepo serviceMasterRepo; + + @Autowired + private EmployeeSignatureRepo employeeSignatureRepo; /* * @Override public ArrayList getAllRole() { //ArrayList resSet * = new ArrayList(); //resSet = @@ -1089,6 +1093,19 @@ public ArrayList getEmployeeDetails4(Integer serviceProviderID) { public ArrayList getEmployeeByDesiganationID(Integer designationID, Integer serviceProviderID) { ArrayList getEmpByDesiganation = employeeMasterRepoo.getempByDesiganation(designationID, serviceProviderID); + for (M_User1 user : getEmpByDesiganation) { + Integer userID = user.getUserID(); + EmployeeSignature signature = employeeSignatureRepo.findOneByUserID(Long.valueOf(userID)); + if (null != signature) { + if (signature.getDeleted()) { + user.setSignatureStatus("InActive"); + } else { + user.setSignatureStatus("Active"); + } + } else { + user.setSignatureStatus(null); + } + } return getEmpByDesiganation; } diff --git a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureService.java b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureService.java index 09ddd34..3006438 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureService.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureService.java @@ -29,4 +29,6 @@ public interface EmployeeSignatureService { Long uploadSignature(EmployeeSignature empSign); + EmployeeSignature updateUserSignatureStatus(String activateUser); + } diff --git a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureServiceImpl.java b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureServiceImpl.java index 2505576..c8de33b 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureServiceImpl.java @@ -21,6 +21,7 @@ */ package com.iemr.admin.service.employeemaster; +import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -67,4 +68,17 @@ public Boolean existSignature(Long userID) { return employeeSignatureRepo.countByUserIDAndSignatureNotNull(userID)>0; } + @Override + public EmployeeSignature updateUserSignatureStatus(String activateUser) { + JSONObject obj = new JSONObject(activateUser); + Long userID = obj.getLong("userID"); + // String role = obj.getString("role"); + boolean active = obj.getBoolean("active"); + EmployeeSignature signature = employeeSignatureRepo.findOneByUserID(userID); + if (signature == null) { + throw new IllegalArgumentException("No signature found for userID: " + userID); + } + signature.setDeleted(!active); + return employeeSignatureRepo.save(signature); + } } From 8fb55ce5f1c601c77bdc7d040a9ec44c1899b5ec Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Wed, 29 Oct 2025 21:28:02 +0530 Subject: [PATCH 28/44] fix:casesheet signature --- .../employeemaster/EmployeeSignatureController.java | 11 ++++++++++- .../repo/employeemaster/EmployeeSignatureRepo.java | 2 +- .../employeemaster/EmployeeSignatureServiceImpl.java | 6 +++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index 79f7f72..deb1bba 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -42,6 +42,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import com.google.gson.JsonObject; import com.iemr.admin.data.employeemaster.EmployeeSignature; import com.iemr.admin.service.employeemaster.EmployeeSignatureServiceImpl; import com.iemr.admin.utils.response.OutputResponse; @@ -125,7 +126,15 @@ public String existFile(@PathVariable("userID") Long userID) throws Exception { try { Boolean userSignID = employeeSignatureServiceImpl.existSignature(userID); - response.setResponse(userSignID.toString()); + Boolean signatureActive = employeeSignatureServiceImpl.isSignatureActive(userID); + + // Create JSON response with both fields + JsonObject responseData = new JsonObject(); + responseData.addProperty("response", userSignID.toString()); + responseData.addProperty("signStatus", signatureActive.toString()); + + // Set the response (existing setResponse method will handle it) + response.setResponse(responseData.toString()); } catch (Exception e) { logger.error("Unexpected error:", e); diff --git a/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java b/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java index 06a89f1..6463ff5 100644 --- a/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java +++ b/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java @@ -39,6 +39,6 @@ public interface EmployeeSignatureRepo extends CrudRepository0; + return employeeSignatureRepo.countByUserIDAndSignatureNotNull(userID) > 0; + } + + public Boolean isSignatureActive(Long userID) { + return employeeSignatureRepo.countByUserIDAndSignatureNotNullAndDeletedFalse(userID) > 0; } @Override From 45250ea7489047e7ff7a3c9ad39dd545f3c2cd74 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Thu, 30 Oct 2025 11:07:01 +0530 Subject: [PATCH 29/44] fix:pom file change --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c74cc29..04c5c88 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.iemr.admin - adminapi - v3.1.0 + admin-api + 3.6.0 war Admin-API Admin Page From c824879c0cf83323e2bda13801f8d81539a4eb2a Mon Sep 17 00:00:00 2001 From: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com> Date: Thu, 30 Oct 2025 12:26:12 +0530 Subject: [PATCH 30/44] API changes in Signature enhancement for Casesheet (#107) * fix:casesheet signature * fix:pom file change --- pom.xml | 4 ++-- .../employeemaster/EmployeeSignatureController.java | 11 ++++++++++- .../repo/employeemaster/EmployeeSignatureRepo.java | 2 +- .../employeemaster/EmployeeSignatureServiceImpl.java | 6 +++++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index c74cc29..04c5c88 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.iemr.admin - adminapi - v3.1.0 + admin-api + 3.6.0 war Admin-API Admin Page diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index 79f7f72..deb1bba 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -42,6 +42,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import com.google.gson.JsonObject; import com.iemr.admin.data.employeemaster.EmployeeSignature; import com.iemr.admin.service.employeemaster.EmployeeSignatureServiceImpl; import com.iemr.admin.utils.response.OutputResponse; @@ -125,7 +126,15 @@ public String existFile(@PathVariable("userID") Long userID) throws Exception { try { Boolean userSignID = employeeSignatureServiceImpl.existSignature(userID); - response.setResponse(userSignID.toString()); + Boolean signatureActive = employeeSignatureServiceImpl.isSignatureActive(userID); + + // Create JSON response with both fields + JsonObject responseData = new JsonObject(); + responseData.addProperty("response", userSignID.toString()); + responseData.addProperty("signStatus", signatureActive.toString()); + + // Set the response (existing setResponse method will handle it) + response.setResponse(responseData.toString()); } catch (Exception e) { logger.error("Unexpected error:", e); diff --git a/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java b/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java index 06a89f1..6463ff5 100644 --- a/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java +++ b/src/main/java/com/iemr/admin/repo/employeemaster/EmployeeSignatureRepo.java @@ -39,6 +39,6 @@ public interface EmployeeSignatureRepo extends CrudRepository0; + return employeeSignatureRepo.countByUserIDAndSignatureNotNull(userID) > 0; + } + + public Boolean isSignatureActive(Long userID) { + return employeeSignatureRepo.countByUserIDAndSignatureNotNullAndDeletedFalse(userID) > 0; } @Override From 7231794cd1339d2225ea2243a5c1663fd83ade47 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Thu, 30 Oct 2025 12:51:28 +0530 Subject: [PATCH 31/44] fix: pom version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 04c5c88..5efbe6e 100644 --- a/pom.xml +++ b/pom.xml @@ -279,7 +279,7 @@ - adminapi-v3.0.0 + ${project.artifactId}-${project.version} org.owasp From 3d22060eea40ca4a3e586713c4ba789ebef05174 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Fri, 7 Nov 2025 18:40:39 +0530 Subject: [PATCH 32/44] fix code --- .../utils/JwtUserIdValidationFilter.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index 64c89a9..855a930 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -73,17 +73,23 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo logger.info("JWT token from header: "); // Skip login and public endpoints - if (path.equals(contextPath + "/user/userAuthenticate") - || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") - || path.startsWith(contextPath + "/swagger-ui") - || path.startsWith(contextPath + "/v3/api-docs") - || path.startsWith(contextPath + "/user/refreshToken") - || path.startsWith(contextPath + "/public")) { - logger.info("Skipping filter for path: " + path); +// if (path.equals(contextPath + "/user/userAuthenticate") +// || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") +// || path.startsWith(contextPath + "/swagger-ui") +// || path.startsWith(contextPath + "/v3/api-docs") +// || path.startsWith(contextPath + "/user/refreshToken") +// || path.startsWith(contextPath + "/public")) { +// logger.info("Skipping filter for path: " + path); +// filterChain.doFilter(servletRequest, servletResponse); +// return; +// } + + if (true){ filterChain.doFilter(servletRequest, servletResponse); return; } + try { String jwtFromCookie = getJwtTokenFromCookies(request); String jwtFromHeader = request.getHeader(Constants.JWT_TOKEN); From 74cd35473d65cfe3e3bf661b8ce1473d2abde46d Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Mon, 10 Nov 2025 14:06:10 +0530 Subject: [PATCH 33/44] fix code --- .../BulkRegistrationController.java | 1 + .../admin/repository/user/UserLoginRepo.java | 6 +++--- .../BulkRegistrationServiceImpl.java | 10 +++++++--- .../admin/utils/JwtAuthenticationUtil.java | 2 +- .../utils/JwtUserIdValidationFilter.java | 20 ++++++++----------- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 700a767..9e63bfb 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -41,6 +41,7 @@ public class BulkRegistrationController { @PostMapping(value = "/bulkRegistration", headers = "Authorization") public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization) { + bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); logger.info("Bulk registration request received. Request payload is omitted from logs."); try { diff --git a/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java b/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java index 8e6c4b9..27b37f9 100644 --- a/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java +++ b/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java @@ -1,5 +1,6 @@ package com.iemr.admin.repository.user; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; @@ -8,9 +9,8 @@ import com.iemr.admin.data.user.M_User; @Repository -public interface UserLoginRepo extends CrudRepository { +public interface UserLoginRepo extends JpaRepository { - @Query(" SELECT u FROM M_User u WHERE u.userID = :userID AND u.Deleted = false ") - public M_User getUserByUserID(@Param("userID") Long userID); + public M_User findByUserID(Integer userID); } 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 6630aef..a6141ea 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -340,8 +340,10 @@ private void saveUserUser(Employee employee, Integer row, String authorization) } mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); - mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); +// mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUser.setCreatedBy("HWCTMAdmin"); mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); + mUser.setModifiedBy("HWCTMAdmin"); mUser.setStatusID(1); mUser.setIsSupervisor(false); mUser.setServiceProviderID(15); @@ -351,7 +353,8 @@ private void saveUserUser(Employee employee, Integer row, String authorization) logger.info("BulkUser:" + bulkUserID); m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); - m_userServiceRoleMapping.setCreatedBy(jwtUtil.extractUsername(authorization)); +// m_userServiceRoleMapping.setCreatedBy(jwtUtil.extractUsername(authorization)); + m_userServiceRoleMapping.setCreatedBy("HWCTMAdmin"); m_userServiceRoleMapping.setRoleID(122); m_userServiceRoleMapping.setProviderServiceMapID(1); // m_userServiceRoleMapping.setWorkingLocationID(117); @@ -373,7 +376,8 @@ private void saveUserUser(Employee employee, Integer row, String authorization) } // mUserDemographics.setReligionID(1); - mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); +// mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUserDemographics.setCreatedBy(jwtUtil.extractUsername("HWCTMAdmin")); // mUserDemographics.setCreatedBy("Psmril2"); // Permanent Address if (!employee.getPermanentAddressLine1().isEmpty()) { diff --git a/src/main/java/com/iemr/admin/utils/JwtAuthenticationUtil.java b/src/main/java/com/iemr/admin/utils/JwtAuthenticationUtil.java index 77c7891..e6c02bb 100644 --- a/src/main/java/com/iemr/admin/utils/JwtAuthenticationUtil.java +++ b/src/main/java/com/iemr/admin/utils/JwtAuthenticationUtil.java @@ -109,7 +109,7 @@ private M_User fetchUserFromDB(String userId) { String redisKey = "user_" + userId; // Redis key format // Fetch user from DB - M_User user = userLoginRepo.getUserByUserID(Long.parseLong(userId)); + M_User user = userLoginRepo.findByUserID(Integer.parseInt(userId)); if (user != null) { M_User userHash = new M_User(); diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index 855a930..13b6aeb 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -73,23 +73,19 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo logger.info("JWT token from header: "); // Skip login and public endpoints -// if (path.equals(contextPath + "/user/userAuthenticate") -// || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") -// || path.startsWith(contextPath + "/swagger-ui") -// || path.startsWith(contextPath + "/v3/api-docs") -// || path.startsWith(contextPath + "/user/refreshToken") -// || path.startsWith(contextPath + "/public")) { -// logger.info("Skipping filter for path: " + path); -// filterChain.doFilter(servletRequest, servletResponse); -// return; -// } - - if (true){ + if (path.equals(contextPath + "/user/userAuthenticate") + || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") + || path.startsWith(contextPath + "/swagger-ui") + || path.startsWith(contextPath + "/v3/api-docs") + || path.startsWith(contextPath + "/user/refreshToken") + || path.startsWith(contextPath + "/public")) { + logger.info("Skipping filter for path: " + path); filterChain.doFilter(servletRequest, servletResponse); return; } + try { String jwtFromCookie = getJwtTokenFromCookies(request); String jwtFromHeader = request.getHeader(Constants.JWT_TOKEN); From f719ba5a38278fba3f275a495add2a808a0042d2 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Mon, 10 Nov 2025 14:09:13 +0530 Subject: [PATCH 34/44] fix code --- .../bulkRegistration/BulkRegistrationController.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 9e63bfb..a0c1177 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -40,8 +40,12 @@ public class BulkRegistrationController { private Map response = new HashMap<>(); @PostMapping(value = "/bulkRegistration", headers = "Authorization") - public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization) { + public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization, HttpServletRequest request + ) { + String authHeader = request.getHeader("Authorization"); + logger.info("Authorization Token: " + authHeader); + logger.info("M_user Request: " + m_user); bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); logger.info("Bulk registration request received. Request payload is omitted from logs."); try { From bb00223dc05ece522d17094f3b3df7362cbd6767 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Mon, 10 Nov 2025 14:23:22 +0530 Subject: [PATCH 35/44] fix code --- .../utils/JwtUserIdValidationFilter.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index 13b6aeb..855a930 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -73,19 +73,23 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo logger.info("JWT token from header: "); // Skip login and public endpoints - if (path.equals(contextPath + "/user/userAuthenticate") - || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") - || path.startsWith(contextPath + "/swagger-ui") - || path.startsWith(contextPath + "/v3/api-docs") - || path.startsWith(contextPath + "/user/refreshToken") - || path.startsWith(contextPath + "/public")) { - logger.info("Skipping filter for path: " + path); +// if (path.equals(contextPath + "/user/userAuthenticate") +// || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") +// || path.startsWith(contextPath + "/swagger-ui") +// || path.startsWith(contextPath + "/v3/api-docs") +// || path.startsWith(contextPath + "/user/refreshToken") +// || path.startsWith(contextPath + "/public")) { +// logger.info("Skipping filter for path: " + path); +// filterChain.doFilter(servletRequest, servletResponse); +// return; +// } + + if (true){ filterChain.doFilter(servletRequest, servletResponse); return; } - try { String jwtFromCookie = getJwtTokenFromCookies(request); String jwtFromHeader = request.getHeader(Constants.JWT_TOKEN); From d52c9503271fa704c102b31c91b0271d707b2b1b Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Mon, 10 Nov 2025 14:30:47 +0530 Subject: [PATCH 36/44] fix code --- .../BulkRegistrationController.java | 16 ++++++++++++++++ .../utils/JwtUserIdValidationFilter.java | 19 +++++++------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index a0c1177..1d4c84a 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -6,6 +6,7 @@ import com.iemr.admin.service.bulkRegistration.EmployeeXmlService; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +43,21 @@ public class BulkRegistrationController { @PostMapping(value = "/bulkRegistration", headers = "Authorization") public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization, HttpServletRequest request ) { + String jwtToken = null; + + Cookie[] cookies = request.getCookies(); + if (cookies != null) { + for (Cookie cookie : cookies) { + if ("jwt".equalsIgnoreCase(cookie.getName())) { // Cookie name == jwt + jwtToken = cookie.getValue(); + break; + } + } + } + + logger.info("JWT Token From Cookie: " + jwtToken); + logger.info("M_user Request: " + m_user); + String authHeader = request.getHeader("Authorization"); logger.info("Authorization Token: " + authHeader); diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index 855a930..f61881a 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -73,18 +73,13 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo logger.info("JWT token from header: "); // Skip login and public endpoints -// if (path.equals(contextPath + "/user/userAuthenticate") -// || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") -// || path.startsWith(contextPath + "/swagger-ui") -// || path.startsWith(contextPath + "/v3/api-docs") -// || path.startsWith(contextPath + "/user/refreshToken") -// || path.startsWith(contextPath + "/public")) { -// logger.info("Skipping filter for path: " + path); -// filterChain.doFilter(servletRequest, servletResponse); -// return; -// } - - if (true){ + if (path.equals(contextPath + "/user/userAuthenticate") + || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") + || path.startsWith(contextPath + "/swagger-ui") + || path.startsWith(contextPath + "/v3/api-docs") + || path.startsWith(contextPath + "/user/refreshToken") + || path.startsWith(contextPath + "/public")) { + logger.info("Skipping filter for path: " + path); filterChain.doFilter(servletRequest, servletResponse); return; } From 86ed8cb935881f95fb4c6b55a1170e2610c73c01 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Mon, 10 Nov 2025 14:35:15 +0530 Subject: [PATCH 37/44] fix code --- .../service/bulkRegistration/BulkRegistrationServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a6141ea..314dbc6 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -342,7 +342,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization) mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); // mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); mUser.setCreatedBy("HWCTMAdmin"); - mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); +// mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); mUser.setModifiedBy("HWCTMAdmin"); mUser.setStatusID(1); mUser.setIsSupervisor(false); From 3ae64367c0406f4ab29a206e9a7c395c54da03d2 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Mon, 10 Nov 2025 15:01:54 +0530 Subject: [PATCH 38/44] fix code --- .../bulkRegistration/BulkRegistrationServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 314dbc6..428dfb7 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -344,8 +344,8 @@ private void saveUserUser(Employee employee, Integer row, String authorization) mUser.setCreatedBy("HWCTMAdmin"); // mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); mUser.setModifiedBy("HWCTMAdmin"); - mUser.setStatusID(1); - mUser.setIsSupervisor(false); + mUser.setStatusID(2); + mUser.setEmployeeID(employee.getUserName()); mUser.setServiceProviderID(15); mUser.setPassword(generateStrongPassword(employee.getPassword())); logger.info("Register_user:" + mUser); @@ -377,7 +377,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization) } // mUserDemographics.setReligionID(1); // mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUserDemographics.setCreatedBy(jwtUtil.extractUsername("HWCTMAdmin")); + mUserDemographics.setCreatedBy("HWCTMAdmin"); // mUserDemographics.setCreatedBy("Psmril2"); // Permanent Address if (!employee.getPermanentAddressLine1().isEmpty()) { From 67a42405e145119b6587845b09e23e4c845cffe7 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Nov 2025 01:00:35 +0530 Subject: [PATCH 39/44] fix code --- .../BulkRegistrationController.java | 5 +-- .../repo/employeemaster/V_ShowuserRepo.java | 4 +++ .../BulkRegistrationService.java | 2 +- .../BulkRegistrationServiceImpl.java | 36 +++++++------------ 4 files changed, 20 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 1d4c84a..9d58f29 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -41,7 +41,8 @@ public class BulkRegistrationController { private Map response = new HashMap<>(); @PostMapping(value = "/bulkRegistration", headers = "Authorization") - public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization, HttpServletRequest request + public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization, @RequestParam String userName, + HttpServletRequest request ) { String jwtToken = null; @@ -65,7 +66,7 @@ public ResponseEntity> registerBulkUser(@RequestBody String bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); logger.info("Bulk registration request received. Request payload is omitted from logs."); try { - bulkRegistrationService.registerBulkUser(m_user, authorization); + bulkRegistrationService.registerBulkUser(m_user, authorization,userName); response.put("status", "Success"); response.put("statusCode", 200); response.put("totalUser", bulkRegistrationServiceimpl.totalEmployeeListSize); diff --git a/src/main/java/com/iemr/admin/repo/employeemaster/V_ShowuserRepo.java b/src/main/java/com/iemr/admin/repo/employeemaster/V_ShowuserRepo.java index 722588f..cea90d0 100644 --- a/src/main/java/com/iemr/admin/repo/employeemaster/V_ShowuserRepo.java +++ b/src/main/java/com/iemr/admin/repo/employeemaster/V_ShowuserRepo.java @@ -23,6 +23,7 @@ import java.util.ArrayList; +import java.util.List; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; @@ -44,4 +45,7 @@ public interface V_ShowuserRepo extends CrudRepository{ @Query("SELECT u FROM V_Showuser u WHERE u.serviceProviderID= :serviceProviderID ORDER By u.userName") ArrayList EmployeeDetails4(@Param("serviceProviderID") Integer serviceProviderID); + @Query("SELECT u FROM V_Showuser u WHERE u.userName = :userName ORDER BY u.userName") + V_Showuser findByUserName(@Param("userName") String userName); + } diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java index 2e5d0dd..354cedf 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java @@ -1,5 +1,5 @@ package com.iemr.admin.service.bulkRegistration; public interface BulkRegistrationService { - void registerBulkUser(String user,String authorization); + void registerBulkUser(String user,String authorization,String userName); } 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 428dfb7..33a8029 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -7,6 +7,7 @@ import com.iemr.admin.data.locationmaster.M_District; import com.iemr.admin.data.rolemaster.StateMasterForRole; import com.iemr.admin.data.user.M_UserServiceRoleMapping; +import com.iemr.admin.repo.employeemaster.V_ShowuserRepo; import com.iemr.admin.service.employeemaster.EmployeeMasterInter; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; import com.iemr.admin.service.rolemaster.Role_MasterInter; @@ -54,6 +55,9 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { private EmployeeMasterInter employeeMasterInter; @Autowired private Role_MasterInter roleMasterInter; + + @Autowired + private V_ShowuserRepo showuserRepo; @Autowired private LocationMasterServiceInter locationMasterServiceInter; @@ -67,7 +71,7 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { private List m_districts; @Override - public void registerBulkUser(String xml, String authorization) { + public void registerBulkUser(String xml, String authorization,String userName) { try { xml = escapeXmlSpecialChars(xml); @@ -76,7 +80,7 @@ public void registerBulkUser(String xml, String authorization) { 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); + saveUserUser(employeeList.getEmployees().get(i), i, authorization,userName); } @@ -100,7 +104,7 @@ public static String escapeXmlSpecialChars(String xml) { } - private void saveUserUser(Employee employee, Integer row, String authorization) throws Exception { + private void saveUserUser(Employee employee, Integer row, String authorization,String createdBy) throws Exception { List validationErrors = new ArrayList<>(); BulkRegistrationError bulkRegistrationErrors_ = new BulkRegistrationError(); M_User1 mUser = new M_User1(); @@ -334,37 +338,24 @@ private void saveUserUser(Employee employee, Integer row, String authorization) mUser.setMaritalStatusID(1); mUser.setEmailID(employee.getEmail()); mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); - mUser.setQualificationID(4); if (!employee.getQualification().isEmpty()) { mUser.setQualificationID(getQualificationId(employee.getQualification())); } mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); -// mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUser.setCreatedBy("HWCTMAdmin"); -// mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); - mUser.setModifiedBy("HWCTMAdmin"); + mUser.setCreatedBy(createdBy); + mUser.setModifiedBy(createdBy); mUser.setStatusID(2); mUser.setEmployeeID(employee.getUserName()); - mUser.setServiceProviderID(15); + mUser.setServiceProviderID(showuserRepo.findByUserName(createdBy).getServiceProviderID()); mUser.setPassword(generateStrongPassword(employee.getPassword())); logger.info("Register_user:" + mUser); M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); logger.info("BulkUser:" + bulkUserID); m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); -// m_userServiceRoleMapping.setCreatedBy(jwtUtil.extractUsername(authorization)); - m_userServiceRoleMapping.setCreatedBy("HWCTMAdmin"); + m_userServiceRoleMapping.setCreatedBy(createdBy); m_userServiceRoleMapping.setRoleID(122); - m_userServiceRoleMapping.setProviderServiceMapID(1); -// m_userServiceRoleMapping.setWorkingLocationID(117); - m_userServiceRoleMapping.setBlockName("Biswanath"); - String[] villageName = {"Bagijuli"}; - m_userServiceRoleMapping.setVillageName(villageName); - String[] villageID = {"25460"}; - m_userServiceRoleMapping.setVillageID(villageID); - m_userServiceRoleMapping.setBlockID(920); - mUserDemographics.setUserID(bulkUserID.getUserID()); mUserDemographics.setCountryID(91); if (!employee.getCommunity().isEmpty()) { @@ -375,10 +366,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization) mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); } -// mUserDemographics.setReligionID(1); -// mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); - mUserDemographics.setCreatedBy("HWCTMAdmin"); -// mUserDemographics.setCreatedBy("Psmril2"); + mUserDemographics.setCreatedBy(createdBy); // Permanent Address if (!employee.getPermanentAddressLine1().isEmpty()) { mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); From f8e646e1c0a084c633abb4300e8acb71b845e731 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Nov 2025 01:10:02 +0530 Subject: [PATCH 40/44] fix code --- .../service/bulkRegistration/BulkRegistrationServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 33a8029..97759f9 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -309,9 +309,9 @@ private void saveUserUser(Employee employee, Integer row, String authorization,S mUser.setTitleID(getTitleId(employee.getTitle())); mUser.setFirstName(employee.getFirstName()); mUser.setLastName(employee.getLastName()); - mUser.setUserName(employee.getUserName()); + mUser.setUserName(employee.getContactNo()); mUser.setdOB(convertStringIntoDate(employee.getDob())); - mUser.setEmployeeID(employee.getContactNo()); + mUser.setEmployeeID(employee.getUserName()); mUser.setEmergencyContactNo(String.valueOf(employee.getEmergencyContactNo())); mUser.setContactNo(String.valueOf(employee.getContactNo())); if (!employee.getMiddleName().isEmpty()) { From 8c48069d8c0d16269bdee14b075f1cb0c556e31f Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Nov 2025 11:39:12 +0530 Subject: [PATCH 41/44] fix code --- .../service/bulkRegistration/BulkRegistrationServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 97759f9..ad96798 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -346,6 +346,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization,S mUser.setCreatedBy(createdBy); mUser.setModifiedBy(createdBy); mUser.setStatusID(2); + mUser.setDeleted(false); mUser.setEmployeeID(employee.getUserName()); mUser.setServiceProviderID(showuserRepo.findByUserName(createdBy).getServiceProviderID()); mUser.setPassword(generateStrongPassword(employee.getPassword())); @@ -414,7 +415,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization,S employeeMasterInter.saveDemography(mUserDemographics); m_bulkUser.add(mUser); m_UserDemographics.add(mUserDemographics); - employeeMasterInter.saveRoleMappingeditedData(m_userServiceRoleMapping, authorization); +// employeeMasterInter.saveRoleMappingeditedData(m_userServiceRoleMapping, authorization); } catch (Exception e) { errorLogs.add("Row :" + (row + 1) + e.getMessage()); From 5f8dcf280cf641a16d682f1ee0658a0194e04b1b Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Nov 2025 12:14:01 +0530 Subject: [PATCH 42/44] fix code --- .../bulkRegistration/BulkRegistrationServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 ad96798..5392f0f 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -348,15 +348,15 @@ private void saveUserUser(Employee employee, Integer row, String authorization,S mUser.setStatusID(2); mUser.setDeleted(false); mUser.setEmployeeID(employee.getUserName()); - mUser.setServiceProviderID(showuserRepo.findByUserName(createdBy).getServiceProviderID()); + mUser.setServiceProviderID(13); mUser.setPassword(generateStrongPassword(employee.getPassword())); logger.info("Register_user:" + mUser); M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); logger.info("BulkUser:" + bulkUserID); - m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); - m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); - m_userServiceRoleMapping.setCreatedBy(createdBy); - m_userServiceRoleMapping.setRoleID(122); +// m_userServiceRoleMapping.setUserID(bulkUserID.getUserID()); +// m_userServiceRoleMapping.setServiceProviderID(bulkUserID.getServiceProviderID()); +// m_userServiceRoleMapping.setCreatedBy(createdBy); +// m_userServiceRoleMapping.setRoleID(122); mUserDemographics.setUserID(bulkUserID.getUserID()); mUserDemographics.setCountryID(91); if (!employee.getCommunity().isEmpty()) { From 30d3317ec41747ec55fd58659b71b0329c6dba12 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Nov 2025 16:29:13 +0530 Subject: [PATCH 43/44] fix code --- .../bulkRegistration/BulkRegistrationController.java | 4 ++-- .../bulkRegistration/BulkRegistrationService.java | 2 +- .../BulkRegistrationServiceImpl.java | 12 ++++-------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 9d58f29..8e69311 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -42,7 +42,7 @@ public class BulkRegistrationController { @PostMapping(value = "/bulkRegistration", headers = "Authorization") public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization, @RequestParam String userName, - HttpServletRequest request + HttpServletRequest request, @RequestParam Integer serviceProviderID , @RequestParam Integer serviceProviderMapID ) { String jwtToken = null; @@ -66,7 +66,7 @@ public ResponseEntity> registerBulkUser(@RequestBody String bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); logger.info("Bulk registration request received. Request payload is omitted from logs."); try { - bulkRegistrationService.registerBulkUser(m_user, authorization,userName); + bulkRegistrationService.registerBulkUser(m_user, authorization,userName,serviceProviderID,serviceProviderMapID); response.put("status", "Success"); response.put("statusCode", 200); response.put("totalUser", bulkRegistrationServiceimpl.totalEmployeeListSize); diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java index 354cedf..e1f3656 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java @@ -1,5 +1,5 @@ package com.iemr.admin.service.bulkRegistration; public interface BulkRegistrationService { - void registerBulkUser(String user,String authorization,String userName); + void registerBulkUser(String user,String authorization,String userName,Integer serviceProviderID,Integer serviceProviderMapID); } 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 5392f0f..3b6caf0 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -6,7 +6,6 @@ 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.data.user.M_UserServiceRoleMapping; import com.iemr.admin.repo.employeemaster.V_ShowuserRepo; import com.iemr.admin.service.employeemaster.EmployeeMasterInter; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; @@ -20,7 +19,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.crypto.SecretKeyFactory; @@ -31,10 +29,8 @@ import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; import java.sql.Date; -import java.text.ParseException; import java.time.*; import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeParseException; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -71,7 +67,7 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { private List m_districts; @Override - public void registerBulkUser(String xml, String authorization,String userName) { + public void registerBulkUser(String xml, String authorization,String userName,Integer serviceProviderID,Integer serviceProviderMapID) { try { xml = escapeXmlSpecialChars(xml); @@ -80,7 +76,7 @@ public void registerBulkUser(String xml, String authorization,String userName) { 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); + saveUserUser(employeeList.getEmployees().get(i), i, authorization,userName,serviceProviderID,serviceProviderMapID); } @@ -104,7 +100,7 @@ public static String escapeXmlSpecialChars(String xml) { } - private void saveUserUser(Employee employee, Integer row, String authorization,String createdBy) throws Exception { + private void saveUserUser(Employee employee, Integer row, String authorization, String createdBy, Integer serviceProviderID, Integer serviceProviderMapID) throws Exception { List validationErrors = new ArrayList<>(); BulkRegistrationError bulkRegistrationErrors_ = new BulkRegistrationError(); M_User1 mUser = new M_User1(); @@ -348,7 +344,7 @@ private void saveUserUser(Employee employee, Integer row, String authorization,S mUser.setStatusID(2); mUser.setDeleted(false); mUser.setEmployeeID(employee.getUserName()); - mUser.setServiceProviderID(13); + mUser.setServiceProviderID(serviceProviderID); mUser.setPassword(generateStrongPassword(employee.getPassword())); logger.info("Register_user:" + mUser); M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); From 6f5a1013d55cba36b26498a46710e835874768c1 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Nov 2025 17:03:42 +0530 Subject: [PATCH 44/44] fix code --- .../bulkRegistration/BulkRegistrationController.java | 4 ++-- .../service/bulkRegistration/BulkRegistrationService.java | 2 +- .../bulkRegistration/BulkRegistrationServiceImpl.java | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 8e69311..4832b53 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -42,7 +42,7 @@ public class BulkRegistrationController { @PostMapping(value = "/bulkRegistration", headers = "Authorization") public ResponseEntity> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization, @RequestParam String userName, - HttpServletRequest request, @RequestParam Integer serviceProviderID , @RequestParam Integer serviceProviderMapID + HttpServletRequest request, @RequestParam Integer serviceProviderID ) { String jwtToken = null; @@ -66,7 +66,7 @@ public ResponseEntity> registerBulkUser(@RequestBody String bulkRegistrationServiceimpl.bulkRegistrationErrors.clear(); logger.info("Bulk registration request received. Request payload is omitted from logs."); try { - bulkRegistrationService.registerBulkUser(m_user, authorization,userName,serviceProviderID,serviceProviderMapID); + bulkRegistrationService.registerBulkUser(m_user, authorization,userName,serviceProviderID); response.put("status", "Success"); response.put("statusCode", 200); response.put("totalUser", bulkRegistrationServiceimpl.totalEmployeeListSize); diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java index e1f3656..19ce84c 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java @@ -1,5 +1,5 @@ package com.iemr.admin.service.bulkRegistration; public interface BulkRegistrationService { - void registerBulkUser(String user,String authorization,String userName,Integer serviceProviderID,Integer serviceProviderMapID); + void registerBulkUser(String user,String authorization,String userName,Integer serviceProviderID); } 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 3b6caf0..0f2debf 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -67,7 +67,7 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { private List m_districts; @Override - public void registerBulkUser(String xml, String authorization,String userName,Integer serviceProviderID,Integer serviceProviderMapID) { + public void registerBulkUser(String xml, String authorization,String userName,Integer serviceProviderID) { try { xml = escapeXmlSpecialChars(xml); @@ -76,7 +76,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,serviceProviderMapID); + saveUserUser(employeeList.getEmployees().get(i), i, authorization,userName,serviceProviderID); } @@ -100,7 +100,7 @@ public static String escapeXmlSpecialChars(String xml) { } - private void saveUserUser(Employee employee, Integer row, String authorization, String createdBy, Integer serviceProviderID, Integer serviceProviderMapID) throws Exception { + private void saveUserUser(Employee employee, Integer row, String authorization, String createdBy, Integer serviceProviderID) throws Exception { List validationErrors = new ArrayList<>(); BulkRegistrationError bulkRegistrationErrors_ = new BulkRegistrationError(); M_User1 mUser = new M_User1();