From 5cef9e30a9951f4ab608a70a85fe8814435c99ca Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 16:50:40 +0530 Subject: [PATCH 1/4] Main branch changes missed --- 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 f1894211e6620528abf347984e93e608e00e4fce Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 19:33:28 +0530 Subject: [PATCH 2/4] 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 838d3dbbe09652b7d3011891f800ac47d14c15a8 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 9 Sep 2025 18:53:50 +0530 Subject: [PATCH 3/4] Created new endpoint for Active and DeActive Employee Signature --- .../EmployeeMasterController.java | 10 ++++---- .../EmployeeSignatureController.java | 15 ++++++++++++ .../admin/data/employeemaster/M_User1.java | 24 ++++++++++++++++++- .../EmployeeMasterServiceImpl.java | 19 ++++++++++++++- .../EmployeeSignatureService.java | 2 ++ .../EmployeeSignatureServiceImpl.java | 16 +++++++++++++ 6 files changed, 80 insertions(+), 6 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..4dcf843 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,8 +1050,11 @@ public String getEmployeeByDesignation(@RequestBody String getDesignation) { ArrayList employeeBydesiganation = employeeMasterInter.getEmployeeByDesiganationID( employeeMaster.getDesignationID(), employeeMaster1.getServiceProviderID()); - - response.setResponse(employeeBydesiganation.toString()); + Gson gson = new GsonBuilder() + .excludeFieldsWithoutExposeAnnotation() // Only serialize fields with @Expose + .create(); + String json = gson.toJson(employeeBydesiganation); + response.setResponse(json); } catch (Exception e) { logger.error("Unexpected error:", 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..4bdaa79 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") @@ -142,4 +143,18 @@ public String existFile(@PathVariable("userID") Long userID) throws Exception { logger.debug("response" + response); return response.toString(); } + @Operation(summary = "Active or DeActive user Signature") + @RequestMapping(value = "/activateOrdeActivateSignature", method = { RequestMethod.POST }, produces = { + "application/json" }) + public String ActivateUser(@RequestBody String activateUser, HttpServletRequest request) { + OutputResponse response = new OutputResponse(); + try { + EmployeeSignature empSignature = employeeSignatureServiceImpl.updateUserSignatureStatus(activateUser); + response.setResponse(empSignature.toString()); + } 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..5fc17db 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,19 @@ 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 (active) { + signature.setDeleted(false); + } else { + signature.setDeleted(true); + } + return employeeSignatureRepo.save(signature); + } + } From 01975a2dc88758118322b12b1d284ac083a708eb Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 9 Sep 2025 20:10:07 +0530 Subject: [PATCH 4/4] coderabbit comments addressed --- .../EmployeeMasterController.java | 7 ++---- .../EmployeeSignatureController.java | 25 ++++++++----------- .../EmployeeSignatureServiceImpl.java | 10 +++----- 3 files changed, 17 insertions(+), 25 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 4dcf843..227baf2 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeMasterController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeMasterController.java @@ -1050,11 +1050,8 @@ public String getEmployeeByDesignation(@RequestBody String getDesignation) { ArrayList employeeBydesiganation = employeeMasterInter.getEmployeeByDesiganationID( employeeMaster.getDesignationID(), employeeMaster1.getServiceProviderID()); - Gson gson = new GsonBuilder() - .excludeFieldsWithoutExposeAnnotation() // Only serialize fields with @Expose - .create(); - String json = gson.toJson(employeeBydesiganation); - response.setResponse(json); + + response.setResponse(employeeBydesiganation.toString()); } catch (Exception e) { logger.error("Unexpected error:", 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 4bdaa79..cd4bad9 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -94,25 +94,21 @@ 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); @@ -143,14 +139,15 @@ public String existFile(@PathVariable("userID") Long userID) throws Exception { logger.debug("response" + response); return response.toString(); } + @Operation(summary = "Active or DeActive user Signature") - @RequestMapping(value = "/activateOrdeActivateSignature", method = { RequestMethod.POST }, produces = { - "application/json" }) + @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); - response.setResponse(empSignature.toString()); + 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); 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 5fc17db..c8de33b 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeSignatureServiceImpl.java @@ -72,15 +72,13 @@ public Boolean existSignature(Long userID) { public EmployeeSignature updateUserSignatureStatus(String activateUser) { JSONObject obj = new JSONObject(activateUser); Long userID = obj.getLong("userID"); - //String role = obj.getString("role"); + // String role = obj.getString("role"); boolean active = obj.getBoolean("active"); EmployeeSignature signature = employeeSignatureRepo.findOneByUserID(userID); - if (active) { - signature.setDeleted(false); - } else { - signature.setDeleted(true); + if (signature == null) { + throw new IllegalArgumentException("No signature found for userID: " + userID); } + signature.setDeleted(!active); return employeeSignatureRepo.save(signature); } - }