Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
5a28f4b
Update application.properties
SauravBizbRolly Nov 26, 2025
ea12e3e
add column in create BeneficiaryModel
SauravBizbRolly Nov 26, 2025
c501e80
update language
SauravBizbRolly Jan 7, 2026
ec3aac3
update language
SauravBizbRolly Jan 7, 2026
bafc879
Downgrade version from 3.6.1 to 3.6.0
SauravBizbRolly Jan 7, 2026
65efdc7
Elastic Search Implementation for Advanced Search (#327)
vanitha1822 Jan 8, 2026
38a4147
Remove empty line in application.properties
SauravBizbRolly Jan 8, 2026
17620d3
fix:signature check for mmu
vishwab1 Jan 9, 2026
68b246e
Merge pull request #335 from PSMRI/release-3.6.1-sign
snehar-nd Jan 9, 2026
9c1493a
Update application.properties
SauravBizbRolly Jan 9, 2026
984d533
Update application.properties
SauravBizbRolly Jan 9, 2026
c3bc3cb
fix: retrive any user without deleted
vishwab1 Jan 13, 2026
8dcdfc3
Merge pull request #336 from PSMRI/release-3.6.1-sign
snehar-nd Jan 13, 2026
5190737
implement state wise hide un hide form fields
SauravBizbRolly Jan 14, 2026
b5f0670
Merge pull request #337 from PSMRI/feature/hide_feilds_state_wise
SauravBizbRolly Jan 14, 2026
4d20b8c
implement state wise hide un hide form fields
SauravBizbRolly Jan 14, 2026
bed849b
implement state wise hide un hide form fields
SauravBizbRolly Jan 16, 2026
dd2c323
enhance welcome sms code
SauravBizbRolly Jan 18, 2026
6d224eb
Merge pull request #338 from PSMRI/feature/manage_upload_file
SauravBizbRolly Jan 18, 2026
4104ad0
fix hide unhide form issue
SauravBizbRolly Jan 18, 2026
c162bcc
Merge pull request #340 from PSMRI/fix_form_feilds_issue
SauravBizbRolly Jan 18, 2026
fdbc9b7
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
0c64cef
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
b3a1922
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
c4c1d48
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
f10f37c
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
b3da893
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
f94d0b0
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
be7889e
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
0022329
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
ba824be
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
c0c5333
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
2e18fdd
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
acd9d8e
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
475a4ac
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
f952708
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
64b2a7e
fix hide unhide form issue
SauravBizbRolly Jan 21, 2026
97f7d5f
Merge branch 'release-3.6.1' into feature/form_validation
SauravBizbRolly Jan 21, 2026
cb1b06e
Merge pull request #343 from PSMRI/feature/form_validation
SauravBizbRolly Jan 21, 2026
a4d169f
remove cors from properties file
SauravBizbRolly Jan 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/main/java/com/iemr/common/CommonApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.client.RestTemplate;

Expand All @@ -40,6 +41,7 @@

@SpringBootApplication
@EnableScheduling
@EnableAsync
public class CommonApplication extends SpringBootServletInitializer {

@Bean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.InvalidKeySpecException;

import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;

import org.springframework.stereotype.Service;

@Service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,7 @@ public class BeneficiaryRegistrationController {
private BeneficiaryOccupationService beneficiaryOccupationService;
private GovtIdentityTypeService govtIdentityTypeService;



@Autowired
@Autowired
private JwtUtil jwtUtil;

@Autowired
Expand Down Expand Up @@ -351,54 +349,51 @@ public String searchUserByPhone(

@Operation(summary = "Provide the list of beneficiaries using Elasticsearch")
@RequestMapping(value = "/searchUser", method = RequestMethod.POST, headers = "Authorization")
public String searchUser(
@RequestBody String request,
@RequestHeader(value = "Authorization", required = false) String auth, HttpServletRequest httpRequest) {

public String searchUser(@RequestBody String request, HttpServletRequest httpRequest) {
OutputResponse response = new OutputResponse();

try {
logger.info("Universal search request received");

JsonParser parser = new JsonParser();
JsonObject requestObj = parser.parse(request).getAsJsonObject();

String searchQuery = null;
if (requestObj.has("search") && !requestObj.get("search").isJsonNull()) {
searchQuery = requestObj.get("search").getAsString();
}

if (searchQuery == null || searchQuery.trim().isEmpty()) {
response.setError(400, "Search query is required");
return response.toString();
}

String jwtToken = CookieUtil.getJwtTokenFromCookie(httpRequest);
String userId = jwtUtil.getUserIdFromToken(jwtToken);
int userID=Integer.parseInt(userId);


String auth = httpRequest.getHeader("Authorization");

Integer userID = jwtUtil.getUserIdFromRequest(httpRequest);

logger.info("ES search for userId: {}", userID);

Boolean is1097 = false;
if (requestObj.has("is1097") && !requestObj.get("is1097").isJsonNull()) {
is1097 = requestObj.get("is1097").getAsBoolean();
}

logger.info("Searching with query: {}, userId: {}, is1097: {}", searchQuery, userID, is1097);

String result = iemrSearchUserService.searchUser(searchQuery, userID, auth, is1097);

if (result == null || result.trim().isEmpty()) {
response.setError(200, "No beneficiaries found");
return response.toString();
}

return result;

} catch (Exception e) {
logger.error("Error in universal search: {}", e.getMessage(), e);
response.setError(400, "Error searching beneficiaries: " + e.getMessage());
return response.toString();
}
}
}

@Operation(summary = "Provide the list of beneficiaries based on search criteria")
@RequestMapping(value = "/searchBeneficiary", method = RequestMethod.POST, headers = "Authorization")
Expand All @@ -422,6 +417,41 @@ public String searchBeneficiary(
return output.toString();
}

/**
* Elasticsearch-based advanced search endpoint
*/
@Operation(summary = "Advanced search beneficiaries using Elasticsearch")
@RequestMapping(value = "/searchBeneficiaryES", method = RequestMethod.POST, headers = "Authorization")
public String searchBeneficiaryES(
@RequestBody BeneficiaryModel request,
HttpServletRequest httpRequest) {

logger.info("searchBeneficiaryES request: {}", request);
OutputResponse output = new OutputResponse();

try {

String auth = httpRequest.getHeader("Authorization");

Integer userID = jwtUtil.getUserIdFromRequest(httpRequest);

logger.info("ES Advanced search for userId: {}", userID);

String result = iemrSearchUserService.findBeneficiaryES(request, userID, auth);

return result;

} catch (NumberFormatException ne) {
logger.error("searchBeneficiaryES failed with number format error: {}", ne.getMessage(), ne);
output.setError(400, "Invalid number format in search criteria");
return output.toString();
} catch (Exception e) {
logger.error("searchBeneficiaryES failed with error: {}", e.getMessage(), e);
output.setError(500, "Error searching beneficiaries: " + e.getMessage());
return output.toString();
}
}

@Operation(summary = "Provide all common data list needed for beneficiary registration")
@RequestMapping(value = "/getRegistrationData", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON, headers = "Authorization")
public String getRegistrationData() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ public ResponseEntity<ApiResponse<?>> deleteField(@PathVariable Long fieldId) {
}

@GetMapping(value = "form/{formId}/fields")
public ResponseEntity<ApiResponse<?>> getStructuredForm(@PathVariable String formId, @RequestParam(name = "lang", defaultValue = "en") String lang) {
public ResponseEntity<ApiResponse<?>> getStructuredForm(@PathVariable String formId, @RequestParam(name = "lang", defaultValue = "en") String lang,@RequestHeader(value = "jwttoken") String token) {
try {
Object result = formMasterService.getStructuredFormByFormId(formId,lang);
Object result = formMasterService.getStructuredFormByFormId(formId,lang,token);
return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success("Form structure fetched successfully", HttpStatus.OK.value(), result));
} catch (Exception e) {
Expand All @@ -97,4 +97,6 @@ public ResponseEntity<ApiResponse<?>> getStructuredForm(@PathVariable String for
}




}
Original file line number Diff line number Diff line change
Expand Up @@ -1224,7 +1224,25 @@ public ResponseEntity<?> getUserDetails(@PathVariable("userName") String userNam
return new ResponseEntity<>(Map.of("error", "UserName Not Found"), HttpStatus.NOT_FOUND);
}
User user = users.get(0);
return new ResponseEntity<>(Map.of("userName", user.getUserName(), "userId", user.getUserID()), HttpStatus.OK);
return new ResponseEntity<>(Map.of("userName", user.getUserName(), "userId", user.getUserID()),
HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(Map.of("error", "Internal server error"), HttpStatus.INTERNAL_SERVER_ERROR);
}

}

@Operation(summary = "Get UserId based on userName")
@GetMapping(value = "/checkUserName/{userName}", produces = MediaType.APPLICATION_JSON, headers = "Authorization")
public ResponseEntity<?> checkUserDetails(@PathVariable("userName") String userName) {
try {
List<User> users = iemrAdminUserServiceImpl.findUserIdByUserName(userName);
if (users.isEmpty()) {
return new ResponseEntity<>(Map.of("error", "UserName Not Found"), HttpStatus.NOT_FOUND);
}
User user = users.get(0);
return new ResponseEntity<>(Map.of("userName", user.getUserName(), "userId", user.getUserID()),
HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(Map.of("error", "Internal server error"), HttpStatus.INTERNAL_SERVER_ERROR);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ public class FormField {
@Column(name = "sequence")
private Integer sequence;

@Column(name = "is_editable")
private Boolean isEditable;

@Column(name = "state_code")
private Integer stateCode;

@Column(name = "created_at")
private LocalDateTime createdAt = LocalDateTime.now();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ public class Translation {
private String english;
@Column(name = "hindi_translation")
private String hindiTranslation;
@Column(name = "assamese_translation")
private String assameseTranslation;
@Column(name = "is_active")
private Boolean isActive;

}
Loading
Loading