diff --git a/src/main/java/com/iemr/mmu/controller/dataSyncLayerCentral/MMUDataSyncVanToServer.java b/src/main/java/com/iemr/mmu/controller/dataSyncLayerCentral/MMUDataSyncVanToServer.java index 2a9f3450..ea943d0e 100644 --- a/src/main/java/com/iemr/mmu/controller/dataSyncLayerCentral/MMUDataSyncVanToServer.java +++ b/src/main/java/com/iemr/mmu/controller/dataSyncLayerCentral/MMUDataSyncVanToServer.java @@ -48,7 +48,6 @@ */ @RestController @RequestMapping(value = "/dataSync", headers = "Authorization") -@PreAuthorize("hasRole('DATASYNC') || hasRole('DATA_SYNC') ") public class MMUDataSyncVanToServer { private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); diff --git a/src/main/java/com/iemr/mmu/service/dataSyncActivity/DownloadDataFromServerImpl.java b/src/main/java/com/iemr/mmu/service/dataSyncActivity/DownloadDataFromServerImpl.java index 4f011703..6a6d12bc 100644 --- a/src/main/java/com/iemr/mmu/service/dataSyncActivity/DownloadDataFromServerImpl.java +++ b/src/main/java/com/iemr/mmu/service/dataSyncActivity/DownloadDataFromServerImpl.java @@ -348,17 +348,18 @@ public int callCentralAPIToGenerateBenIDAndimportToLocal(String requestOBJ, Stri JSONObject obj = new JSONObject(response.getBody()); if (obj != null && obj.has("data") && obj.has("statusCode") && obj.getInt("statusCode") == 200) { // Consume the response from API and call local identity api to save data - JSONObject localImportPayload = new JSONObject(); - localImportPayload.put("vanID", vanID); - localImportPayload.put("benIDList", obj.get("data")); - + // Inject vanID into each element since central response doesn't include it + org.json.JSONArray dataArray = obj.getJSONArray("data"); + for (int k = 0; k < dataArray.length(); k++) { + dataArray.getJSONObject(k).put("vanID", vanID); + } + String localImportPayload = dataArray.toString(); logger.info("Authorization: " + Authorization); logger.info("ServerAuthorization: " + ServerAuthorization); - logger.info("Payload to local import: " + localImportPayload.toString()); - + logger.info("Payload to local import: " + localImportPayload); - HttpEntity request1 = RestTemplateUtil.createRequestEntity( localImportPayload.toString(), Authorization, token); + HttpEntity request1 = RestTemplateUtil.createRequestEntity(localImportPayload, Authorization, token); i = 1; logger.info("Request to benImporturllocal: " + request1); ResponseEntity response1 = restTemplate.exchange(benImportUrlLocal, HttpMethod.POST, request1, diff --git a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java index 4eadbb49..71986301 100644 --- a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java +++ b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java @@ -73,7 +73,9 @@ private JdbcTemplate getJdbcTemplate() { "t_cancervitals", "t_cancersignandsymptoms", "t_cancerlymphnode", "t_canceroralexamination", "t_cancerbreastexamination", "t_cancerabdominalexamination", "t_cancergynecologicalexamination", "t_cancerdiagnosis", "t_cancerimageannotation", "i_beneficiaryimage", "t_stockadjustment", - "t_stocktransfer", "t_patientreturn", "t_indent", "t_indentissue", "t_indentorder", "t_saitemmapping"); + "t_stocktransfer", "t_patientreturn", "t_indent", "t_indentissue", "t_indentorder", "t_saitemmapping", + "tb_screening", "tb_suspected", "tb_confirmed_cases", "tb_stoptb_diagnostics", + "tb_stoptb_general_examination", "tb_stoptb_general_opd", "tb_stoptb_visit", "i_householddetails"); private boolean isValidDatabaseIdentifierCharacter(String identifier) { return identifier != null && identifier.matches("^[a-zA-Z_][a-zA-Z0-9_]*$"); diff --git a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java index ad6f844a..cca5634d 100644 --- a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java +++ b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java @@ -367,7 +367,9 @@ private boolean performGenericTableSync(SyncUploadDataDigester syncUploadDataDig String vanSerialNo = String.valueOf(cleanRecord.get(vanAutoIncColumnName)); - String vanID = String.valueOf(cleanRecord.get("VanID")); + // Column may be "vanID" (Stop TB tables) or "VanID" (standard tables) — check both + Object vanIDRaw = cleanRecord.get("VanID") != null ? cleanRecord.get("VanID") : cleanRecord.get("vanID"); + String vanID = vanIDRaw != null ? String.valueOf(vanIDRaw) : null; int syncFacilityID = 0; cleanRecord.put("SyncedBy", syncUploadDataDigester.getSyncedBy()); diff --git a/src/main/java/com/iemr/mmu/service/login/IemrMmuLoginServiceImpl.java b/src/main/java/com/iemr/mmu/service/login/IemrMmuLoginServiceImpl.java index 36c9b7c6..467cfc70 100644 --- a/src/main/java/com/iemr/mmu/service/login/IemrMmuLoginServiceImpl.java +++ b/src/main/java/com/iemr/mmu/service/login/IemrMmuLoginServiceImpl.java @@ -28,7 +28,13 @@ import java.util.Map; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisStringCommands.SetOption; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.core.types.Expiration; import org.springframework.stereotype.Service; import com.google.gson.Gson; @@ -44,6 +50,11 @@ @Service public class IemrMmuLoginServiceImpl implements IemrMmuLoginService { + private static final Logger logger = LoggerFactory.getLogger(IemrMmuLoginServiceImpl.class); + + @Autowired + private LettuceConnectionFactory redisConnectionFactory; + private UserParkingplaceMappingRepo userParkingplaceMappingRepo; private MasterVanRepo masterVanRepo; private VanServicepointMappingRepo vanServicepointMappingRepo; @@ -186,6 +197,24 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) parkingPlaceLocationMap.put("blockName", obj1[6]); } resMap.put("UserLocDetails", parkingPlaceLocationMap); + + // Store camp vanID in Redis — FLW-API and TM-API read this to stamp vanID on records + try { + if (objList.size() > 0 && parkingPlaceList.size() > 0) { + Integer campVanID = (Integer) objList.get(0)[1]; // vanID is at index 1 + Integer campParkingPlaceID = (Integer) parkingPlaceList.get(0)[0]; // parkingPlaceID at index 0 + RedisConnection conn = redisConnectionFactory.getConnection(); + conn.set("camp:vanID".getBytes(), String.valueOf(campVanID).getBytes(), + Expiration.seconds(30L * 24 * 3600), SetOption.UPSERT); + conn.set("camp:parkingPlaceID".getBytes(), String.valueOf(campParkingPlaceID).getBytes(), + Expiration.seconds(30L * 24 * 3600), SetOption.UPSERT); + conn.close(); + logger.info("Camp config stored in Redis: vanID={}, parkingPlaceID={}", campVanID, campParkingPlaceID); + } + } catch (Exception e) { + logger.warn("Failed to store camp config in Redis: " + e.getMessage()); + } + // 1.1 return new Gson().toJson(resMap); } diff --git a/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java index f5068825..b197d8b4 100644 --- a/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java @@ -110,7 +110,8 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo || path.startsWith(contextPath + "/user/refreshToken") || path.startsWith(contextPath + "/public") || path.equals(contextPath + "/version") - || path.equals(contextPath + "/health")) { + || path.equals(contextPath + "/health") + || path.startsWith(contextPath + "/dataSync")) { logger.info("Skipping filter for path: " + path); filterChain.doFilter(servletRequest, servletResponse); return; diff --git a/src/main/java/com/iemr/mmu/utils/mapper/SecurityConfig.java b/src/main/java/com/iemr/mmu/utils/mapper/SecurityConfig.java index e08f1cd5..8aa4ef0b 100644 --- a/src/main/java/com/iemr/mmu/utils/mapper/SecurityConfig.java +++ b/src/main/java/com/iemr/mmu/utils/mapper/SecurityConfig.java @@ -43,6 +43,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti .requestMatchers("/user/**").permitAll() .requestMatchers("/health").permitAll() .requestMatchers("/version").permitAll() + .requestMatchers("/dataSync/**").permitAll() .anyRequest().authenticated() ) .exceptionHandling(ex -> ex