Skip to content

Commit 4327dea

Browse files
vanitha1822SauravBizbRollysushant-bizbrollydrtechieravishanigarapu
authored
Merge release 3.6.1 to main (#127)
* Bulk registration * Bulk registration * Bulk registration * add userName and password in Bulk registration * add userName and password in Bulk registration * remove unwanted line * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * Httpheader content disposition changed * Coderabbitai comments adrressed * Httpheader content disposition changed (#100) * Httpheader content disposition changed * Coderabbitai comments adrressed * Compile error resolved * fix code * Main branch changes missed (#102) * Feature/signaturerelease (#103) * Main branch changes missed * Signature file changed * Feature/signaturerelease (#104) * Main branch changes missed * Signature file changed * Created new endpoint for Active and DeActive Employee Signature * coderabbit comments addressed * fix:casesheet signature * fix:pom file change * API changes in Signature enhancement for Casesheet (#107) * fix:casesheet signature * fix:pom file change * fix: pom version * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix code * fix: amm-1927 send headers only if the request is from the allowed origin * fix: amm-1927 coderabbit fixes * Update regex handling for localhost URLs * Enhance regex pattern for URL matching * Cherry-pick health and version API enhancements to release-3.6.1 (#124) * feat(health,version): add health and version endponts * fix(health): add constant and remove duplicates * fix(health): avoid permanent DEGRADED from historical deadlocks * fix(health): Removed the unnecessary boolean literal * fix(health): Fixed the broken lock-wait detection * fix(health): avoid blocking DB I/O under write lock and restore interrupt flag * fix(health): add cancelFutures in healthservice * fix(health): close basic DB connection before advanced checks and remove shared-map race * fix: merge 3.6.1 to main --------- Co-authored-by: Saurav Mishra <saurav.mishra@bizbrolly.com> Co-authored-by: Sushant <77480199+sushant-bizbrolly@users.noreply.github.com> Co-authored-by: Saurav Mishra <80103738+SauravBizbRolly@users.noreply.github.com> Co-authored-by: Mithun James <drtechie@users.noreply.github.com> Co-authored-by: Ravi Shanigarapu <ravi.shanigarapu@wipro.com> Co-authored-by: ravishanigarapu <133210792+ravishanigarapu@users.noreply.github.com> Co-authored-by: vishwab1 <vishwanath@navadhiti.com> Co-authored-by: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com> Co-authored-by: SnehaRH <77656297+snehar-nd@users.noreply.github.com> Co-authored-by: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> Co-authored-by: 5Amogh <amoghavarsh@navadhiti.com> Co-authored-by: KOPPIREDDY DURGA PRASAD <144464542+DurgaPrasad-54@users.noreply.github.com>
1 parent 0683b41 commit 4327dea

28 files changed

Lines changed: 1412 additions & 70 deletions

pom.xml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>com.iemr.admin</groupId>
77
<artifactId>admin-api</artifactId>
8-
<version>3.4.0</version>
8+
<version>3.6.1</version>
99
<packaging>war</packaging>
1010
<name>Admin-API</name>
1111
<description>Admin Page</description>
@@ -54,6 +54,10 @@
5454
<groupId>org.springframework.boot</groupId>
5555
<artifactId>spring-boot-devtools</artifactId>
5656
</dependency>
57+
<dependency>
58+
<groupId>com.fasterxml.jackson.dataformat</groupId>
59+
<artifactId>jackson-dataformat-xml</artifactId>
60+
</dependency>
5761
<dependency>
5862
<groupId>org.springframework.boot</groupId>
5963
<artifactId>spring-boot-starter</artifactId>
@@ -73,6 +77,11 @@
7377
<groupId>org.springframework.boot</groupId>
7478
<artifactId>spring-boot-starter-data-jpa</artifactId>
7579
</dependency>
80+
<dependency>
81+
<groupId>org.apache.commons</groupId>
82+
<artifactId>commons-compress</artifactId>
83+
<version>1.21</version>
84+
</dependency>
7685
<dependency>
7786
<groupId>org.springframework.boot</groupId>
7887
<artifactId>spring-boot-starter-web</artifactId>
@@ -181,12 +190,7 @@
181190
<groupId>org.apache.poi</groupId>
182191
<artifactId>poi-ooxml</artifactId>
183192
<version>5.2.3</version>
184-
<exclusions>
185-
<exclusion>
186-
<groupId>org.apache.commons</groupId>
187-
<artifactId>commons-compress</artifactId>
188-
</exclusion>
189-
</exclusions>
193+
190194
</dependency>
191195

192196
<!-- start newly added dependencies -->
@@ -280,7 +284,7 @@
280284
</dependencies>
281285

282286
<build>
283-
<finalName>${artifactId}-${version}</finalName>
287+
<finalName>${project.artifactId}-${project.version}</finalName>
284288
<plugins>
285289
<plugin>
286290
<groupId>org.owasp</groupId>

src/main/java/com/iemr/admin/config/CorsConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ public void addCorsMappings(CorsRegistry registry) {
1919
Arrays.stream(allowedOrigins.split(","))
2020
.map(String::trim)
2121
.toArray(String[]::new))
22-
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
23-
.allowedHeaders("*")
22+
.allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS")
23+
.allowedHeaders("Authorization", "Content-Type", "Accept", "Jwttoken",
24+
"serverAuthorization", "ServerAuthorization", "serverauthorization", "Serverauthorization")
2425
.exposedHeaders("Authorization", "Jwttoken")
2526
.allowCredentials(true)
2627
.maxAge(3600);
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package com.iemr.admin.controller.bulkRegistration;
2+
3+
import com.iemr.admin.repo.employeemaster.EmployeeMasterRepoo;
4+
import com.iemr.admin.service.bulkRegistration.BulkRegistrationService;
5+
import com.iemr.admin.service.bulkRegistration.BulkRegistrationServiceImpl;
6+
import com.iemr.admin.service.bulkRegistration.EmployeeXmlService;
7+
import com.iemr.admin.service.locationmaster.LocationMasterServiceInter;
8+
import io.swagger.v3.oas.annotations.Operation;
9+
import jakarta.servlet.http.Cookie;
10+
import jakarta.servlet.http.HttpServletRequest;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
import org.springframework.beans.factory.annotation.Autowired;
14+
import org.springframework.core.io.ClassPathResource;
15+
import org.springframework.http.HttpHeaders;
16+
import org.springframework.http.MediaType;
17+
import org.springframework.http.ResponseEntity;
18+
import org.springframework.web.bind.annotation.*;
19+
20+
import java.lang.reflect.Method;
21+
import java.util.HashMap;
22+
import java.util.Map;
23+
24+
@RestController
25+
public class BulkRegistrationController {
26+
@Autowired
27+
private EmployeeXmlService employeeXmlService;
28+
@Autowired
29+
BulkRegistrationServiceImpl bulkRegistrationServiceimpl;
30+
private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
31+
32+
33+
@Autowired
34+
BulkRegistrationService bulkRegistrationService;
35+
36+
@Autowired
37+
private EmployeeMasterRepoo employeeMasterRepoo;
38+
private Map<String, Object> errorResponse = new HashMap<>();
39+
@Autowired
40+
private LocationMasterServiceInter locationMasterServiceInter;
41+
private Map<String, Object> response = new HashMap<>();
42+
43+
@PostMapping(value = "/bulkRegistration", headers = "Authorization")
44+
public ResponseEntity<Map<String, Object>> registerBulkUser(@RequestBody String m_user, @RequestHeader String authorization, @RequestParam String userName,
45+
HttpServletRequest request, @RequestParam Integer serviceProviderID
46+
) {
47+
String jwtToken = null;
48+
49+
Cookie[] cookies = request.getCookies();
50+
if (cookies != null) {
51+
for (Cookie cookie : cookies) {
52+
if ("jwt".equalsIgnoreCase(cookie.getName())) { // Cookie name == jwt
53+
jwtToken = cookie.getValue();
54+
break;
55+
}
56+
}
57+
}
58+
59+
logger.info("JWT Token From Cookie: " + jwtToken);
60+
logger.info("M_user Request: " + m_user);
61+
62+
String authHeader = request.getHeader("Authorization");
63+
logger.info("Authorization Token: " + authHeader);
64+
65+
logger.info("M_user Request: " + m_user);
66+
bulkRegistrationServiceimpl.bulkRegistrationErrors.clear();
67+
logger.info("Bulk registration request received. Request payload is omitted from logs.");
68+
try {
69+
bulkRegistrationService.registerBulkUser(m_user, authorization,userName,serviceProviderID);
70+
response.put("status", "Success");
71+
response.put("statusCode", 200);
72+
response.put("totalUser", bulkRegistrationServiceimpl.totalEmployeeListSize);
73+
response.put("registeredUser", bulkRegistrationServiceimpl.m_bulkUser.size());
74+
response.put("error", bulkRegistrationServiceimpl.errorLogs.toString());
75+
76+
bulkRegistrationServiceimpl.m_bulkUser.clear();
77+
bulkRegistrationServiceimpl.m_UserDemographics.clear();
78+
bulkRegistrationServiceimpl.errorLogs.clear();
79+
bulkRegistrationServiceimpl.totalEmployeeListSize=0;
80+
81+
} catch (Exception e) {
82+
response.put("message", e.getMessage());
83+
response.put("statusCode", 500);
84+
85+
}
86+
return ResponseEntity.ok(response);
87+
88+
}
89+
90+
@GetMapping(value = "/download-error-sheet", headers = "Authorization")
91+
public ResponseEntity<byte[]> downloadErrorSheet() {
92+
try {
93+
byte[] fileContent = bulkRegistrationServiceimpl.insertErrorLog();
94+
95+
HttpHeaders headers = new HttpHeaders();
96+
headers.add("Content-Disposition", "attachment; filename=error_log.xlsx");
97+
98+
if(!bulkRegistrationServiceimpl.bulkRegistrationErrors.isEmpty()){
99+
bulkRegistrationServiceimpl.bulkRegistrationErrors.clear();
100+
}
101+
return ResponseEntity.ok()
102+
.headers(headers)
103+
.contentType(MediaType.APPLICATION_OCTET_STREAM)
104+
.body(fileContent);
105+
106+
} catch (Exception e) {
107+
return ResponseEntity.status(500).body(null);
108+
}
109+
}
110+
111+
112+
}

src/main/java/com/iemr/admin/controller/employeemaster/EmployeeMasterController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,15 @@
3030
import org.slf4j.Logger;
3131
import org.slf4j.LoggerFactory;
3232
import org.springframework.beans.factory.annotation.Autowired;
33-
import org.springframework.context.annotation.PropertySource;
3433
import org.springframework.http.MediaType;
35-
3634
import org.springframework.web.bind.annotation.RequestBody;
3735
import org.springframework.web.bind.annotation.RequestMapping;
3836
import org.springframework.web.bind.annotation.RequestMethod;
3937
import org.springframework.web.bind.annotation.RestController;
4038

4139
import com.fasterxml.jackson.databind.ObjectMapper;
4240
import com.google.gson.Gson;
41+
import com.google.gson.GsonBuilder;
4342
import com.iemr.admin.data.employeemaster.M_Community;
4443
import com.iemr.admin.data.employeemaster.M_Designation;
4544
import com.iemr.admin.data.employeemaster.M_Gender;
@@ -1051,7 +1050,7 @@ public String getEmployeeByDesignation(@RequestBody String getDesignation) {
10511050

10521051
ArrayList<M_User1> employeeBydesiganation = employeeMasterInter.getEmployeeByDesiganationID(
10531052
employeeMaster.getDesignationID(), employeeMaster1.getServiceProviderID());
1054-
1053+
10551054
response.setResponse(employeeBydesiganation.toString());
10561055

10571056
} catch (Exception e) {

src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,34 @@
2121
*/
2222
package com.iemr.admin.controller.employeemaster;
2323

24+
import java.net.URLEncoder;
25+
import java.nio.charset.StandardCharsets;
2426
import java.util.Base64;
2527

2628
import org.slf4j.Logger;
2729
import org.slf4j.LoggerFactory;
2830
import org.springframework.beans.factory.annotation.Autowired;
2931
import org.springframework.context.annotation.PropertySource;
32+
import org.springframework.http.ContentDisposition;
3033
import org.springframework.http.HttpHeaders;
34+
import org.springframework.http.InvalidMediaTypeException;
3135
import org.springframework.http.MediaType;
3236
import org.springframework.http.ResponseEntity;
33-
37+
import org.springframework.web.bind.annotation.GetMapping;
3438
import org.springframework.web.bind.annotation.PathVariable;
39+
import org.springframework.web.bind.annotation.PostMapping;
3540
import org.springframework.web.bind.annotation.RequestBody;
3641
import org.springframework.web.bind.annotation.RequestMapping;
3742
import org.springframework.web.bind.annotation.RequestMethod;
3843
import org.springframework.web.bind.annotation.RestController;
3944

45+
import com.google.gson.JsonObject;
4046
import com.iemr.admin.data.employeemaster.EmployeeSignature;
4147
import com.iemr.admin.service.employeemaster.EmployeeSignatureServiceImpl;
42-
import com.iemr.admin.utils.mapper.InputMapper;
4348
import com.iemr.admin.utils.response.OutputResponse;
4449

4550
import io.swagger.v3.oas.annotations.Operation;
51+
import jakarta.servlet.http.HttpServletRequest;
4652

4753

4854
@PropertySource("classpath:application.properties")
@@ -54,12 +60,10 @@ public class EmployeeSignatureController {
5460
@Autowired
5561
EmployeeSignatureServiceImpl employeeSignatureServiceImpl;
5662

57-
private InputMapper inputMapper = new InputMapper();
58-
5963
private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
6064

6165
@Operation(summary = "Upload")
62-
@RequestMapping(value = "/upload", headers = "Authorization", method = { RequestMethod.POST }, produces = {
66+
@PostMapping(value = "/upload", headers = "Authorization", produces = {
6367
"application/json" })
6468
public String uploadFile(@RequestBody EmployeeSignature emp) {
6569
OutputResponse response = new OutputResponse();
@@ -83,22 +87,27 @@ public String uploadFile(@RequestBody EmployeeSignature emp) {
8387
}
8488

8589
@Operation(summary = "User id")
86-
@RequestMapping(value = "/{userID}", headers = "Authorization", method = { RequestMethod.GET })
90+
@GetMapping(value = "/{userID}", headers = "Authorization")
8791
public ResponseEntity<byte[]> fetchFile(@PathVariable("userID") Long userID) throws Exception {
88-
OutputResponse response = new OutputResponse();
8992
logger.debug("File download for userID" + userID);
9093

9194
try {
9295

9396
EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID);
9497
HttpHeaders responseHeaders = new HttpHeaders();
95-
responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION,
96-
"inline; filename=\"" + userSignID.getFileName() + "\"");
97-
responseHeaders.set("filename", userSignID.getFileName());
98-
99-
return ResponseEntity.ok().contentType(MediaType.parseMediaType(userSignID.getFileType()))
100-
.headers(responseHeaders).body(userSignID.getSignature());
101-
98+
ContentDisposition cd = ContentDisposition.attachment()
99+
.filename(userSignID.getFileName(), StandardCharsets.UTF_8).build();
100+
responseHeaders.setContentDisposition(cd);
101+
102+
MediaType mediaType;
103+
try {
104+
mediaType = MediaType.parseMediaType(userSignID.getFileType());
105+
} catch (InvalidMediaTypeException | NullPointerException e) {
106+
mediaType = MediaType.APPLICATION_OCTET_STREAM;
107+
}
108+
byte[] fileBytes = userSignID.getSignature(); // MUST be byte[]
109+
return ResponseEntity.ok().headers(responseHeaders).contentType(mediaType).contentLength(fileBytes.length)
110+
.body(fileBytes);
102111
} catch (Exception e) {
103112
logger.error("Unexpected error:", e);
104113
logger.error("File download for userID failed with exception " + e.getMessage(), e);
@@ -117,7 +126,15 @@ public String existFile(@PathVariable("userID") Long userID) throws Exception {
117126
try {
118127

119128
Boolean userSignID = employeeSignatureServiceImpl.existSignature(userID);
120-
response.setResponse(userSignID.toString());
129+
Boolean signatureActive = employeeSignatureServiceImpl.isSignatureActive(userID);
130+
131+
// Create JSON response with both fields
132+
JsonObject responseData = new JsonObject();
133+
responseData.addProperty("response", userSignID.toString());
134+
responseData.addProperty("signStatus", signatureActive.toString());
135+
136+
// Set the response (existing setResponse method will handle it)
137+
response.setResponse(responseData.toString());
121138

122139
} catch (Exception e) {
123140
logger.error("Unexpected error:", e);
@@ -128,4 +145,19 @@ public String existFile(@PathVariable("userID") Long userID) throws Exception {
128145
logger.debug("response" + response);
129146
return response.toString();
130147
}
148+
149+
@Operation(summary = "Active or DeActive user Signature")
150+
@PostMapping(value = "/activateOrdeActivateSignature", headers = "Authorization", produces = { "application/json" })
151+
public String ActivateUser(@RequestBody String activateUser, HttpServletRequest request) {
152+
OutputResponse response = new OutputResponse();
153+
try {
154+
EmployeeSignature empSignature = employeeSignatureServiceImpl.updateUserSignatureStatus(activateUser);
155+
boolean active = empSignature.getDeleted() == null ? false : !empSignature.getDeleted();
156+
response.setResponse("{\"userID\":" + empSignature.getUserID() + ",\"active\":" + active + "}");
157+
} catch (Exception e) {
158+
logger.error("Active or Deactivate User Signature failed with exception " + e.getMessage(), e);
159+
response.setError(e);
160+
}
161+
return response.toString();
162+
}
131163
}

0 commit comments

Comments
 (0)