diff --git a/pom.xml b/pom.xml index 25b8da59..171ab162 100644 --- a/pom.xml +++ b/pom.xml @@ -263,7 +263,7 @@ logback-core test - + org.springdoc springdoc-openapi-starter-webmvc-ui diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties index e2ab08ad..a6451109 100644 --- a/src/main/environment/common_ci.properties +++ b/src/main/environment/common_ci.properties @@ -174,7 +174,7 @@ grievanceUserAuthenticate = @env.GRIEVANCE_USER_AUTHENTICATE@ grievanceDataSyncDuration = @env.GRIEVANCE_DATA_SYNC_DURATION@ springdoc.api-docs.enabled=@env.SWAGGER_DOC_ENABLED@ -springdoc.swagger-ui.enabled=@env.SWAGGER_UI_ENABLED@ +springdoc.swagger-ui.enabled=@env.SWAGGER_DOC_ENABLED@ isProduction=@env.IS_PRODUCTION@ diff --git a/src/main/environment/common_docker.properties b/src/main/environment/common_docker.properties index ba22283b..1035af57 100644 --- a/src/main/environment/common_docker.properties +++ b/src/main/environment/common_docker.properties @@ -171,7 +171,7 @@ grievanceUserAuthenticate = ${GRIEVANCE_USER_AUTHENTICATE} grievanceDataSyncDuration = ${GRIEVANCE_DATA_SYNC_DURATION} springdoc.api-docs.enabled=${SWAGGER_DOC_ENABLED} -springdoc.swagger-ui.enabled=${SWAGGER_UI_ENABLED} +springdoc.swagger-ui.enabled=${SWAGGER_DOC_ENABLED} isProduction=${IS_PRODUCTION} diff --git a/src/main/java/com/iemr/common/config/CorsConfig.java b/src/main/java/com/iemr/common/config/CorsConfig.java index fdd9b494..bdee1beb 100644 --- a/src/main/java/com/iemr/common/config/CorsConfig.java +++ b/src/main/java/com/iemr/common/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 public void addCorsMappings(CorsRegistry registry) { diff --git a/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java b/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java index d9b0f06f..8f573d6d 100644 --- a/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java +++ b/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java @@ -103,6 +103,7 @@ public class BeneficiaryRegistrationController { private BeneficiaryOccupationService beneficiaryOccupationService; private GovtIdentityTypeService govtIdentityTypeService; + @Autowired public void setBenRelationshipTypeService(BenRelationshipTypeService benRelationshipTypeService) { this.benRelationshipTypeService = benRelationshipTypeService; diff --git a/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java b/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java index a5f72bbf..30a1bc3f 100644 --- a/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java +++ b/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java @@ -7,6 +7,7 @@ import com.iemr.common.utils.response.ApiResponse; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.jpa.repository.Query; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -19,7 +20,7 @@ public class DynamicFormController { @Autowired private FormMasterService formMasterService; - @PostMapping(value = "createModule",headers = "Authorization") + @PostMapping(value = "createModule") public ResponseEntity> createModule(@Valid @RequestBody ModuleDTO moduleDTO) { try { Object result = formMasterService.createModule(moduleDTO); @@ -34,7 +35,7 @@ public ResponseEntity> createModule(@Valid @RequestBody ModuleDTO } } - @PostMapping(value = "createForm",headers = "Authorization") + @PostMapping(value = "createForm") public ResponseEntity> createForm(@Valid @RequestBody FormDTO dto) { try { Object result = formMasterService.createForm(dto); @@ -46,7 +47,7 @@ public ResponseEntity> createForm(@Valid @RequestBody FormDTO dto } } - @PostMapping(value = "createFields",headers = "Authorization") + @PostMapping(value = "createFields") public ResponseEntity> createField(@Valid @RequestBody List dto) { try { Object result = formMasterService.createField(dto); @@ -83,14 +84,15 @@ public ResponseEntity> deleteField(@PathVariable Long fieldId) { } @GetMapping(value = "form/{formId}/fields") - public ResponseEntity> getStructuredForm(@PathVariable String formId) { + public ResponseEntity> getStructuredForm(@PathVariable String formId, @RequestParam(name = "lang", defaultValue = "en") String lang) { try { - Object result = formMasterService.getStructuredFormByFormId(formId); + Object result = formMasterService.getStructuredFormByFormId(formId,lang); return ResponseEntity.status(HttpStatus.OK) .body(ApiResponse.success("Form structure fetched successfully", HttpStatus.OK.value(), result)); } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(ApiResponse.error("Failed to fetch form structure", HttpStatus.INTERNAL_SERVER_ERROR.value(), null)); + .body(ApiResponse.error("Failed to fetch form structure:"+e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value(), e)); } } diff --git a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java index 080c8762..55e2f93f 100644 --- a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java +++ b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java @@ -80,8 +80,8 @@ public class IEMRAdminController { private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private InputMapper inputMapper = new InputMapper(); - @Value("${captcha.enable-captcha}") - private boolean enableCaptcha; +// @Value("${captcha.enable-captcha}") + private boolean enableCaptcha =false; @Autowired private CaptchaValidationService captchaValidatorService; diff --git a/src/main/java/com/iemr/common/data/translation/Translation.java b/src/main/java/com/iemr/common/data/translation/Translation.java new file mode 100644 index 00000000..81a906fa --- /dev/null +++ b/src/main/java/com/iemr/common/data/translation/Translation.java @@ -0,0 +1,23 @@ +package com.iemr.common.data.translation; + +import jakarta.persistence.*; +import lombok.Data; + +@Entity +@Table(name = "m_translation") +@Data +public class Translation { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + @Column(name = "label_key") + private String labelKey; + @Column(name = "english") + private String english; + @Column(name = "hindi_translation") + private String hindiTranslation; + @Column(name = "is_active") + private Boolean isActive; +} diff --git a/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryModel.java b/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryModel.java index ed7c9cad..e7a7a3de 100644 --- a/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryModel.java +++ b/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryModel.java @@ -81,6 +81,47 @@ public class BeneficiaryModel implements Comparable { @Expose private Boolean isConsent=false; + @Expose + private Boolean isDeath; + + @Expose + private String dateOfDeath; + + @Expose + private String isDeathValue; + + @Expose + private String timeOfDeath; + + @Expose + private String reasonOfDeath; + + @Expose + private Integer reasonOfDeathId; + + @Expose + private String placeOfDeath; + + @Expose + private Integer placeOfDeathId; + + @Expose + private String otherPlaceOfDeath; + + @Expose + private Boolean isSpouseAdded; + + @Expose + private Boolean isChildrenAdded; + + @Expose + private Boolean isMarried; + + @Expose + private Integer doYouHavechildren; + + @Expose + private Integer noofAlivechildren; @Expose private String beneficiaryID; diff --git a/src/main/java/com/iemr/common/model/beneficiary/RMNCHBeneficiaryDetailsRmnch.java b/src/main/java/com/iemr/common/model/beneficiary/RMNCHBeneficiaryDetailsRmnch.java new file mode 100644 index 00000000..b6bc8512 --- /dev/null +++ b/src/main/java/com/iemr/common/model/beneficiary/RMNCHBeneficiaryDetailsRmnch.java @@ -0,0 +1,502 @@ +package com.iemr.common.model.beneficiary; + +import com.google.gson.annotations.Expose; +import lombok.Data; + +import jakarta.persistence.*; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.sql.Timestamp; + +@Entity +@Table(name = "i_beneficiarydetails_rmnch",schema = "db_identity") +@Data +public class RMNCHBeneficiaryDetailsRmnch { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Expose + @Column(name = "beneficiaryDetails_RmnchId", insertable = false, updatable = false) + private Long beneficiaryDetails_RmnchId; + + @Expose + @Column(name = "BeneficiaryRegID") + private Long BenRegId; + + @Expose + @Column(name = "aadhaNo") + private String aadhaNo; + + @Expose + @Column(name = "aadha_no") + private String aadha_no; + + @Expose + @Column(name = "aadha_noId") + private Integer aadha_noId; + + @Expose + @Column(name = "age") + private Integer age; + + @Expose + @Column(name = "ageAtMarriage") + private Integer ageAtMarriage; + + @Expose + @Column(name = "age_unit") + private String age_unit; + + @Expose + @Column(name = "age_unitId") + private Integer age_unitId; + + @Expose + @Column(name = "childRegisteredAWCID") + private Long childRegisteredAWCID; + + @Expose + @Column(name = "childRegisteredSchoolID") + private Integer childRegisteredSchoolID; + + @Expose + @Column(name = "dateofdelivey") + private Timestamp dateofdelivey; + + @Expose + @Column(name = "expectedDateofDelivery") + private Timestamp expectedDateOfDelivery; + + @Expose + @Column(name = "facilitySectionID") + private Integer facilitySectionID; + + @Expose + @Column(name = "guidelineId") + private String guidelineId; + + @Expose + @Column(name = "houseoldId") + private Long houseoldId; + + @Expose + @Column(name = "lastDeliveryConductedID") + private Integer lastDeliveryConductedID; + + @Expose + @Column(name = "lastMenstrualPeriod") + private String lastMenstrualPeriod; + + @Expose + @Column(name = "latitude") + private BigDecimal latitude; + + @Expose + @Column(name = "lengthofMenstrualCycleId") + private Integer lengthofMenstrualCycleId; + + @Expose + @Column(name = "literacyId") + private Integer literacyId; + + @Expose + @Column(name = "longitude") + private BigDecimal longitude; + + @Expose + @Column(name = "menstrualBFDId") + private Integer menstrualBFDId; + + @Expose + @Column(name = "menstrualProblemId") + private Integer menstrualProblemId; + + @Expose + @Column(name = "menstrualStatusId") + private Integer menstrualStatusId; + + @Expose + @Column(name = "mobileOthers") + private String mobileOthers; + + @Expose + @Column(name = "mobilenoofRelation") + private String mobilenoofRelation; + + @Expose + @Column(name = "mobilenoofRelationId") + private Integer mobilenoofRelationId; + + @Expose + @Column(name = "motherName") + private String motherName; + + @Expose + @Column(name = "ncd_priority") + private Integer ncd_priority; + + @Expose + @Column(name = "need_opcareId") + private Integer need_opcareId; + + @Expose + @Column(name = "previousLiveBirth") + private String previousLiveBirth; + + @Expose + @Column(name = "rchid") + private String rchid; + + @Expose + @Column(name = "registrationDate") + private Timestamp registrationDate; + + @Expose + @Column(name = "registrationType") + private String registrationType; + + @Expose + @Column(name = "regularityofMenstrualCycleId") + private Integer regularityofMenstrualCycleId; + + @Expose + @Column(name = "religionOthers") + private String religionOthers; + + @Expose + @Column(name = "reproductiveStatus") + private String reproductiveStatus; + + @Expose + @Column(name = "reproductiveStatusId") + private Integer reproductiveStatusId; + + @Expose + @Column(name = "serverUpdatedStatus") + private Integer serverUpdatedStatus; + + @Expose + @Column(name = "typeofSchoolID") + private Integer typeofSchoolID; + + @Expose + @Column(name = "whoConductedDeliveryID") + private Integer whoConductedDeliveryID; + + @Expose + @Column(name = "Deleted") + private Boolean deleted; + + @Expose + @Column(name = "Processed") + private String Processed = "N"; + + @Expose + @Column(name = "CreatedBy") + private String createdBy; + + @Expose + @Column(name = "CreatedDate") + private Timestamp createdDate; + + @Expose + @Column(name = "Reserved") + private Boolean reserved; + + @Expose + @Column(name = "ReservedFor") + private String reservedFor; + + @Expose + @Column(name = "ReservedOn") + private String reservedOn; + + @Expose + @Column(name = "ReservedById") + private Integer reservedById; + + @Expose + @Column(name = "ModifiedBy") + private String updatedBy; + + @Expose + @Column(name = "LastModDate") + private Timestamp updatedDate; + + @Expose + @Column(name = "VanSerialNo") + private Long id; + + @Expose + @Column(name = "VanID") + private Integer VanID; + + @Expose + @Column(name = "VehicalNo") + private String vehicalNo; + + @Expose + @Column(name = "ParkingPlaceID") + private Integer parkingPlaceID; + + @Expose + @Column(name = "SyncedBy") + private String syncedBy; + + @Expose + @Column(name = "SyncedDate") + private Timestamp syncedDate; + + @Expose + @Column(name = "ProviderServiceMapID") + private Integer ProviderServiceMapID; + + @Expose + @Column(name = "deviceId") + private Integer deviceId; + + @Expose + @Column(name = "beneficiaryId") + private Long benficieryid; + + // new fields 30-06-2021 + @Expose + @Column(name = "RelatedBeneficiaryIds") + private String relatedBeneficiaryIdsDB; + @Expose + @Column(name = "HRPStatus") + private Boolean hrpStatus; + @Expose + @Column(name = "ImmunizationStatus") + private Boolean immunizationStatus; + @Expose + @Column(name = "NishchayPregnancyStatus") + private String nishchayPregnancyStatus; + @Expose + @Column(name = "NishchayPregnancyStatusPosition") + private Integer nishchayPregnancyStatusPosition; + @Expose + @Column(name = "NishchayDeliveryStatus") + private String nishchayDeliveryStatus; + @Expose + @Column(name = "NishchayDeliveryStatusPosition") + private Integer nishchayDeliveryStatusPosition; + + @Expose + @Column(name = "FamilyHeadRelation") + private String familyHeadRelation; + @Expose + @Column(name = "FamilyHeadRelationPosition") + private Integer familyHeadRelationPosition; + + @Expose + @Column(name = "MenstrualStatus") + private String menstrualStatus; + @Expose + @Column(name = "ComplicationsOthers") + private String complicationsOthers; + + @Expose + @Transient + private Long[] relatedBeneficiaryIds; + + @Expose + @Transient + private String literacyStatus; + + @Expose + @Transient + private String branchName; + + // location + @Expose + @Transient + private Integer countryId; + @Expose + @Transient + private String countryName; + @Expose + @Transient + private Integer stateId; + @Expose + @Transient + private String stateName; +// @Expose +// @Transient +// private Integer districtId; +// @Expose +// @Transient +// private String districtName; + @Expose + @Transient + private Integer blockId; + @Expose + @Transient + private String blockName; + @Expose + @Transient + private Integer villageId; + @Expose + @Transient + private String villageName; + + @Expose + @Transient + private Integer servicePointID; + @Expose + @Transient + private String servicePointName; + + @Expose + @Transient + private Integer zoneID; + @Expose + @Transient + private String zoneName; + + @Expose + @Transient + private String addressLine1; + @Expose + @Transient + private String addressLine2; + @Expose + @Transient + private String addressLine3; + + // ---------------------------------------------- + + // Extra data from platform + @Expose + @Transient + private String bankAccount; + @Expose + @Transient + private String community; + @Expose + @Transient + private Integer communityId; + @Expose + @Transient + private String contact_number; + @Expose + @Transient + private Integer currSubDistrictId; + @Expose + @Transient + private Integer districtid; + @Expose + @Transient + private String districtname; + @Expose + @Transient + private Timestamp dob; + @Expose + @Transient + private String fatherName; + @Expose + @Transient + private String firstName; + @Expose + @Transient + private String gender; + @Expose + @Transient + private Integer genderId; + @Expose + @Transient + private String ifscCode; + @Expose + @Transient + private String lastName; + @Expose + @Transient + private String maritalstatus; + @Expose + @Transient + private Integer maritalstatusId; + @Expose + @Transient + private Timestamp marriageDate; + @Expose + @Transient + private String nameOfBank; + @Expose + @Transient + private String religion; + @Expose + @Transient + private BigInteger religionID; + @Expose + @Transient + private String spousename; + @Expose + @Transient + private String user_image; + + // 08102020 + @Expose + @Transient + private String ageFull; + + @Expose + private Boolean isDeath; + + @Expose + private String isDeathValue; + + @Expose + private String dateOfDeath; + + + @Expose + private String timeOfDeath; + + @Expose + private String reasonOfDeath; + + @Expose + private Integer reasonOfDeathId; + + @Expose + private String placeOfDeath; + + @Expose + private Integer placeOfDeathId; + + @Expose + private String otherPlaceOfDeath; + + // 07-07-2021 + @Expose + @Column(name = "WhoConductedDelivery") + private String whoConductedDelivery; + @Expose + @Column(name = "LastDeliveryConducted") + private String lastDeliveryConducted; + @Expose + @Column(name = "FacilitySelection") + private String facilitySelection; + @Expose + @Column(name = "DeliveryDate") + private String deliveryDate; + @Expose + @Column(name = "ChildRegisteredSchool") + private String childRegisteredSchool; + @Expose + @Column(name = "TypeOfSchool") + private String typeOfSchool; +// 13-04-2022 + @Expose + @Column(name = "dateMarriage") + private Timestamp dateMarriage; + @Expose + @Column(name = "nayiPahalDeliveryStatus") + private String nayiPahalDeliveryStatus; + @Expose + @Column(name = "nayiPahalDeliveryStatusPosition") + private Integer nayiPahalDeliveryStatusPosition; + @Expose + @Column(name = "noOfDaysForDelivery") + private Integer noOfDaysForDelivery; + +} diff --git a/src/main/java/com/iemr/common/repository/beneficiary/BeneficiaryDetailsRmnchRepository.java b/src/main/java/com/iemr/common/repository/beneficiary/BeneficiaryDetailsRmnchRepository.java new file mode 100644 index 00000000..896d696a --- /dev/null +++ b/src/main/java/com/iemr/common/repository/beneficiary/BeneficiaryDetailsRmnchRepository.java @@ -0,0 +1,10 @@ +//package com.iemr.common.repository.beneficiary; +// +//import com.iemr.common.model.beneficiary.RMNCHBeneficiaryDetailsRmnch; +//import org.springframework.data.jpa.repository.JpaRepository; +//import org.springframework.stereotype.Repository; +// +//@Repository +//public interface BeneficiaryDetailsRmnchRepository extends JpaRepository { +// +//} diff --git a/src/main/java/com/iemr/common/repository/translation/TranslationRepo.java b/src/main/java/com/iemr/common/repository/translation/TranslationRepo.java new file mode 100644 index 00000000..f6a5dcb0 --- /dev/null +++ b/src/main/java/com/iemr/common/repository/translation/TranslationRepo.java @@ -0,0 +1,13 @@ +package com.iemr.common.repository.translation; + +import com.iemr.common.data.translation.Translation; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; +@Repository +public interface TranslationRepo extends JpaRepository { + + Optional findByLabelKeyAndIsActive(String labelKey, boolean isActive); + +} diff --git a/src/main/java/com/iemr/common/service/beneficiary/RegisterBenificiaryServiceImpl.java b/src/main/java/com/iemr/common/service/beneficiary/RegisterBenificiaryServiceImpl.java index aa0c2a71..7d5f1de0 100644 --- a/src/main/java/com/iemr/common/service/beneficiary/RegisterBenificiaryServiceImpl.java +++ b/src/main/java/com/iemr/common/service/beneficiary/RegisterBenificiaryServiceImpl.java @@ -30,6 +30,7 @@ import java.util.ArrayList; import java.util.List; +import com.iemr.common.model.beneficiary.RMNCHBeneficiaryDetailsRmnch; import com.iemr.common.service.welcomeSms.WelcomeBenificarySmsService; import com.iemr.common.service.welcomeSms.WelcomeBenificarySmsServiceImpl; import org.json.JSONObject; @@ -83,6 +84,10 @@ public class RegisterBenificiaryServiceImpl implements RegisterBenificiaryServic + + + + @Autowired OutboundHistoryRepository outboundHistoryRepository; @@ -120,6 +125,8 @@ public Integer updateBenificiary(BeneficiaryModel benificiaryDetails, String aut Integer updatedRows = 0; IdentityEditDTO identityEditDTO = identityBenEditMapper.BenToIdentityEditMapper(benificiaryDetails); setDemographicDetails(identityEditDTO,benificiaryDetails); + + if (benificiaryDetails.getBeneficiaryIdentities() != null && benificiaryDetails.getBeneficiaryIdentities().size() > 0) { @@ -129,10 +136,12 @@ public Integer updateBenificiary(BeneficiaryModel benificiaryDetails, String aut identityEditDTO.setDob(benificiaryDetails.getDOB()); updatedRows = identityBeneficiaryService.editIdentityEditDTO(identityEditDTO, auth, benificiaryDetails.getIs1097()); - + logger.info("updateBen"); + //updateDeathOfBenificiary(benificiaryDetails); return updatedRows; } + private void setDemographicDetails(IdentityEditDTO identityEditDTO, BeneficiaryModel benificiaryDetails) { if(null != benificiaryDetails.getI_bendemographics()) { identityEditDTO.setCommunity(benificiaryDetails.getI_bendemographics().getCommunityName()); @@ -164,6 +173,9 @@ else if(null != benificiaryDetails.getI_bendemographics().getReligion()) else identityEditDTO.setIncomeStatus(benificiaryDetails.getI_bendemographics().getIncomeStatus()); } + if(benificiaryDetails!=null){ + //updateDeathOfBenificiary(benificiaryDetails); + } } @@ -184,13 +196,6 @@ public String save(BeneficiaryModel beneficiaryModel, HttpServletRequest servlet setSaveDemographicDetails(identityDTO,beneficiaryModel); // identityDTO.setOtherFields(beneficiaryModel.getOtherFields()); identityDTO.setIsConsent(beneficiaryModel.getIsConsent()); -// identityDTO.setIsDeath(beneficiaryModel.getIsDeath()); -// identityDTO.setIsDeathValue(beneficiaryModel.getIsDeathValue()); -// identityDTO.setDateOfDeath(beneficiaryModel.getDateOfDeath()); -// identityDTO.setPlaceOfDeath(beneficiaryModel.getPlaceOfDeath()); -// identityDTO.setOtherPlaceOfDeath(beneficiaryModel.getOtherPlaceOfDeath()); -// identityDTO.setTimeOfDeath(beneficiaryModel.getTimeOfDeath()); - identityDTO.setFaceEmbedding(beneficiaryModel.getFaceEmbedding()); identityDTO.setEmergencyRegistration(beneficiaryModel.isEmergencyRegistration()); @@ -263,6 +268,9 @@ else if(null != beneficiaryModel.getI_bendemographics().getReligion()) else identityDTO.setIncomeStatus(beneficiaryModel.getI_bendemographics().getIncomeStatus()); } + if(beneficiaryModel!=null){ + // updateDeathOfBenificiary(beneficiaryModel); + } } diff --git a/src/main/java/com/iemr/common/service/dynamicForm/FormMasterService.java b/src/main/java/com/iemr/common/service/dynamicForm/FormMasterService.java index c603cd65..6d22e59a 100644 --- a/src/main/java/com/iemr/common/service/dynamicForm/FormMasterService.java +++ b/src/main/java/com/iemr/common/service/dynamicForm/FormMasterService.java @@ -16,7 +16,7 @@ public interface FormMasterService { List createField(List dto); FormField updateField(FieldDTO dto); - FormResponseDTO getStructuredFormByFormId(String formId); + FormResponseDTO getStructuredFormByFormId(String formId,String lang); void deleteField(Long fieldId); } diff --git a/src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java b/src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java index 19864742..df019de7 100644 --- a/src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java +++ b/src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java @@ -1,14 +1,17 @@ package com.iemr.common.service.dynamicForm; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.iemr.common.data.dynamic_from.FormDefinition; import com.iemr.common.data.dynamic_from.FormField; import com.iemr.common.data.dynamic_from.FormModule; +import com.iemr.common.data.translation.Translation; import com.iemr.common.dto.dynamicForm.*; import com.iemr.common.repository.dynamic_form.FieldRepository; import com.iemr.common.repository.dynamic_form.FormRepository; import com.iemr.common.repository.dynamic_form.ModuleRepository; +import com.iemr.common.repository.translation.TranslationRepo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.fasterxml.jackson.core.type.TypeReference; @@ -27,6 +30,9 @@ public class FormMasterServiceImpl implements FormMasterService { @Autowired private FormRepository formRepo; @Autowired private FieldRepository fieldRepo; + @Autowired + private TranslationRepo translationRepo; + @Override public FormModule createModule(ModuleDTO dto) { FormModule module = new FormModule(); @@ -97,7 +103,7 @@ public FormField updateField(FieldDTO dto) { } @Override - public FormResponseDTO getStructuredFormByFormId(String formId) { + public FormResponseDTO getStructuredFormByFormId(String formId,String lang) { FormDefinition form = formRepo.findByFormId(formId) .orElseThrow(() -> new IllegalArgumentException("Invalid form ID")); @@ -106,13 +112,28 @@ public FormResponseDTO getStructuredFormByFormId(String formId) { List fieldDtos = fields.stream() .map(field -> { + String labelKey = field.getFieldId(); // field label already contains label_key + + Translation t = translationRepo.findByLabelKeyAndIsActive(labelKey, true) + .orElse(null); + + String translatedLabel = field.getLabel(); // fallback + + if (t != null) { + if ("hi".equalsIgnoreCase(lang)) { + translatedLabel = t.getHindiTranslation(); + } else { + translatedLabel = t.getEnglish(); + } + } + FieldResponseDTO dto = new FieldResponseDTO(); dto.setId(field.getId()); dto.setVisible(field.getIsVisible()); dto.setFormId(field.getForm().getFormId()); dto.setSectionTitle(field.getSectionTitle()); dto.setFieldId(field.getFieldId()); - dto.setLabel(field.getLabel()); + dto.setLabel(translatedLabel); dto.setType(field.getType()); dto.setIsRequired(field.getIsRequired()); dto.setDefaultValue(field.getDefaultValue()); @@ -122,8 +143,14 @@ public FormResponseDTO getStructuredFormByFormId(String formId) { try { // Handle options if (field.getOptions() != null && !field.getOptions().isBlank()) { - List options = objectMapper.readValue(field.getOptions(), new TypeReference<>() {}); - dto.setOptions(options.isEmpty() ? null : options); + JsonNode node = objectMapper.readTree(field.getOptions()); + List options = null; + if (node.isArray()) { + options = objectMapper.convertValue(node, new TypeReference<>() {}); + } else if (node.has("options")) { + options = objectMapper.convertValue(node.get("options"), new TypeReference<>() {}); + } + dto.setOptions(options == null || options.isEmpty() ? null : options); } else { dto.setOptions(null); } @@ -143,7 +170,8 @@ public FormResponseDTO getStructuredFormByFormId(String formId) { } else { dto.setConditional(null); } - } catch (JsonProcessingException e) { + } catch (Exception e) { + System.err.println("JSON Parsing Error in field: " + field.getFieldId()); throw new RuntimeException("Failed to parse JSON for field: " + field.getFieldId(), e); } @@ -155,7 +183,7 @@ public FormResponseDTO getStructuredFormByFormId(String formId) { GroupedFieldResponseDTO singleSection = new GroupedFieldResponseDTO(); - singleSection.setSectionTitle("HBNC Form Fields"); // your custom section title + singleSection.setSectionTitle(singleSection.getSectionTitle()); // your custom section title singleSection.setFields(fieldDtos); FormResponseDTO response = new FormResponseDTO(); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 427754c5..18723465 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -206,10 +206,10 @@ genben-api=http://localhost:8092/ #### SMS Configuration send-sms=false sendSMSUrl = http://localhost:8080/sms/sendSMS -source-address=AIDSHL -sms-username= -sms-password= -send-message-url= +#source-address=AIDSHL +#sms-username= +#sms-password= +#send-message-url= ###SMS Scheduler configurations start-sms-scheduler=false @@ -366,19 +366,6 @@ captcha.secret-key= captcha.verify-url= https://challenges.cloudflare.com/turnstile/v0/siteverify captcha.enable-captcha=false -cors.allowed-origins= http://localhost:*,https://amritdemo.piramalswasthya.org - -# DB Connections -spring.datasource.url=jdbc:mysql://localhost:3306/db_iemr -spring.datasource.username= -spring.datasource.password= - - -secondary.datasource.username= -secondary.datasource.password= -secondary.datasource.url=jdbc:mysql://localhost:3306/db_reporting -secondary.datasource.driver-class-name=com.mysql.jdbc.Driver - video-call-url = allowed.file.extensions=msg,pdf,png,jpeg,doc,docx,xlsx,xls,csv,txt