diff --git a/pom.xml b/pom.xml index 42245b93..1c802cfc 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.iemr.common.flw flw-api - 3.7.0 + 3.8.0 war FLW-API diff --git a/src/main/java/com/iemr/flw/controller/AshaProfileController.java b/src/main/java/com/iemr/flw/controller/AshaProfileController.java index 1bda4499..cedfcda0 100644 --- a/src/main/java/com/iemr/flw/controller/AshaProfileController.java +++ b/src/main/java/com/iemr/flw/controller/AshaProfileController.java @@ -1,35 +1,21 @@ package com.iemr.flw.controller; import com.iemr.flw.domain.iemr.AshaWorker; -import com.iemr.flw.domain.iemr.M_User; -import com.iemr.flw.dto.iemr.UserServiceRoleDTO; -import com.iemr.flw.repo.iemr.UserServiceRoleRepo; import com.iemr.flw.service.AshaProfileService; import com.iemr.flw.service.EmployeeMasterInter; -import com.iemr.flw.service.UserService; import io.lettuce.core.dynamic.annotation.Param; import com.iemr.flw.utils.JwtUtil; -import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; -import com.iemr.flw.utils.JwtAuthenticationUtil; -import com.iemr.flw.utils.JwtUtil; -import com.iemr.flw.utils.exception.IEMRException; -import io.jsonwebtoken.Claims; -import io.swagger.v3.oas.annotations.Operation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; -import java.util.Objects; @RestController @RequestMapping(value = "/asha", produces = "application/json") diff --git a/src/main/java/com/iemr/flw/controller/DeathReportsController.java b/src/main/java/com/iemr/flw/controller/DeathReportsController.java index f5317a8b..e8b50de9 100644 --- a/src/main/java/com/iemr/flw/controller/DeathReportsController.java +++ b/src/main/java/com/iemr/flw/controller/DeathReportsController.java @@ -84,8 +84,8 @@ public String getCdrRecords(@RequestBody GetBenRequestHandler requestDTO, logger.info("fetching All CDR Details for user: " + requestDTO.getAshaId()); if (requestDTO != null) { List result = deathReportsService.getCdrRecords(requestDTO); - Gson gson = new GsonBuilder() - .setDateFormat("MMM dd, yyyy h:mm:ss a") // Set the desired date format + Gson gson = new GsonBuilder()// Set the desired date format + .setDateFormat("MMM dd, yyyy h:mm:ss a") .create(); String s = gson.toJson(result); if (s != null) @@ -111,8 +111,8 @@ public String getMdsrRecords(@RequestBody GetBenRequestHandler requestDTO, logger.info("fetching All MDSR Details for user: " + requestDTO.getAshaId()); if (requestDTO != null) { List result = deathReportsService.getMdsrRecords(requestDTO); - Gson gson = new GsonBuilder() - .setDateFormat("MMM dd, yyyy h:mm:ss a") // Set the desired date format + Gson gson = new GsonBuilder()// Set the desired date format + .setDateFormat("MMM dd, yyyy h:mm:ss a") .create(); String s = gson.toJson(result); if (s != null) diff --git a/src/main/java/com/iemr/flw/controller/IncentiveController.java b/src/main/java/com/iemr/flw/controller/IncentiveController.java index c76d26ae..ba60dffb 100644 --- a/src/main/java/com/iemr/flw/controller/IncentiveController.java +++ b/src/main/java/com/iemr/flw/controller/IncentiveController.java @@ -103,8 +103,8 @@ public String getAllIncentivesByUserId(@RequestBody GetBenRequestHandler request return response.toString(); } - @RequestMapping(value = {"/update"}, method = RequestMethod.POST) - public String updateIncentive(@RequestBody PendingActivityDTO requestDTO) { + @RequestMapping(value = {"/update"}, method = RequestMethod.POST, consumes = {"multipart/form-data"}) + public String updateIncentive(@ModelAttribute PendingActivityDTO requestDTO) { OutputResponse response = new OutputResponse(); try { @@ -116,12 +116,12 @@ public String updateIncentive(@RequestBody PendingActivityDTO requestDTO) { if (s != null) response.setResponse(s); else - response.setError(5000, "No record found"); + response.setError(500, "No record found"); } else - response.setError(5000, "Invalid/NULL request obj"); + response.setError(500, "Invalid/NULL request obj"); } catch (Exception e) { logger.error("Error in high risk assessment data : " + e); - response.setError(5000, "Error in high risk assessment data : " + e); + response.setError(500, "Error in high risk assessment data : " + e); } return response.toString(); diff --git a/src/main/java/com/iemr/flw/controller/MaternalHealthController.java b/src/main/java/com/iemr/flw/controller/MaternalHealthController.java index e65eacda..f0955af6 100644 --- a/src/main/java/com/iemr/flw/controller/MaternalHealthController.java +++ b/src/main/java/com/iemr/flw/controller/MaternalHealthController.java @@ -26,7 +26,7 @@ import java.util.List; @RestController -@RequestMapping(value = "/maternalCare", headers = "Authorization", consumes = "application/json", produces = "application/json") +@RequestMapping(value = "/maternalCare", consumes = "application/json", produces = "application/json") public class MaternalHealthController { private final Logger logger = LoggerFactory.getLogger(CoupleController.class); @@ -241,9 +241,9 @@ public String getDeliveryOutcome(@RequestBody GetBenRequestHandler requestDTO, List result = deliveryOutcomeService.getDeliveryOutcome(requestDTO); Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy h:mm:ss a").create(); String s = gson.toJson(result); - if (s != null) - response.setResponse(s); - else + if (result != null && !result.isEmpty()) { + response.setResponse(gson.toJson(result)); + }else response.setError(5000, "No record found"); } else response.setError(5000, "Invalid/NULL request obj"); diff --git a/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java b/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java index 6050fab5..d3a1b56c 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java @@ -17,7 +17,6 @@ public class DeliveryOutcome { @Column(name = "ben_id") private Long benId; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MMM dd, yyyy, h:mm:ss a") @Column(name = "delivery_date") private Timestamp dateOfDelivery; @@ -54,7 +53,6 @@ public class DeliveryOutcome { @Column(name = "still_birth") private Integer stillBirth; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MMM dd, yyyy, h:mm:ss a") @Column(name = "discharge_date") private Timestamp dateOfDischarge; diff --git a/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java b/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java index 870a48f5..3f35dc59 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java @@ -24,10 +24,10 @@ public class IncentivePendingActivity { @Column(name = "record_id", nullable = false) private Long recordId; - - @Column(name = "module_name", nullable = false, length = 100) - private String moduleName; - + + @Column(name = "m_incentive_id") + private Long mincentiveId; + @Column(name = "user_id", nullable = false) private Integer userId; diff --git a/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java b/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java index eb8b0107..d6bcd7b6 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java @@ -45,7 +45,7 @@ public class ScreeningKalaAzar { @Column(name = "house_hold_details_Id",nullable = false) private Long houseHoldDetailsId; - @Column(name = "userID") + @Column(name = "user_id") private Integer userId; @Temporal(TemporalType.DATE) @@ -97,7 +97,7 @@ public class ScreeningKalaAzar { @Column(name = "created_by") private String createdBy; - @Column(name = "diseaseTypeID") + @Column(name = "disease_type_id") private Integer diseaseTypeId; @Column(name = "refer_to_name") diff --git a/src/main/java/com/iemr/flw/domain/iemr/M_User.java b/src/main/java/com/iemr/flw/domain/iemr/User.java similarity index 91% rename from src/main/java/com/iemr/flw/domain/iemr/M_User.java rename to src/main/java/com/iemr/flw/domain/iemr/User.java index 0187a613..d422f926 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/M_User.java +++ b/src/main/java/com/iemr/flw/domain/iemr/User.java @@ -1,7 +1,6 @@ package com.iemr.flw.domain.iemr; import java.sql.Timestamp; -import java.time.LocalDate; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.gson.annotations.Expose; @@ -14,18 +13,10 @@ import jakarta.persistence.Table; import lombok.Data; -import com.google.gson.annotations.Expose; -import jakarta.persistence.*; -import lombok.Data; -import java.sql.Date; -import java.sql.Timestamp; -import java.time.LocalDate; - @Entity -@Table(name = "m_User", schema = "db_iemr") +@Table(name = "m_user", schema = "db_iemr") @Data -public class M_User { - +public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose @@ -144,11 +135,11 @@ public class M_User { @Column(name = "failed_attempt", insertable = false) private Integer failedAttempt; - public M_User() { + public User() { // TODO Auto-generated constructor stub } - public M_User(Integer userID, String userName) { + public User(Integer userID, String userName) { // TODO Auto-generated constructor stub this.userID = userID; this.userName = userName; diff --git a/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java b/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java index 122f652d..18b5ca52 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java @@ -54,6 +54,7 @@ public class CdrDTO { private String deathCertImage1; private String deathCertImage2; + private String cdrImage; private Timestamp updatedDate; diff --git a/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java b/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java index 941721ca..5e94697a 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java @@ -10,7 +10,6 @@ public class DeliveryOutcomeDTO { private Long id; private Long benId; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private Timestamp dateOfDelivery; private String timeOfDelivery; private String placeOfDelivery; diff --git a/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java b/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java index 5b07e40a..e59047ab 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java @@ -35,4 +35,10 @@ public class MdsrDTO { private Timestamp updatedDate; private String updatedBy; + + private String mdsr1File; + + private String mdsr2File; + + private String mdsrDeathCertFile; } diff --git a/src/main/java/com/iemr/flw/dto/iemr/PendingActivityDTO.java b/src/main/java/com/iemr/flw/dto/iemr/PendingActivityDTO.java index 4d8dbd99..5fcdd537 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/PendingActivityDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/PendingActivityDTO.java @@ -9,6 +9,7 @@ public class PendingActivityDTO { private Long id; private Integer userId; - private List Images; + private List images; private String moduleName; + private String activityName; } diff --git a/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java index 017d73af..36f48dfc 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java @@ -37,98 +37,7 @@ public class TBScreeningDTO { private Boolean bmi; private Boolean contactWithTBPatient; private Boolean historyOfTBInLastFiveYrs; - private String sympotomatic; + private String sympotomatic; private String asymptomatic; private String recommandateTest; - - - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public Long getBenId() { - return benId; - } - - public void setBenId(Long benId) { - this.benId = benId; - } - - public Timestamp getVisitDate() { - return visitDate; - } - - public void setVisitDate(Timestamp visitDate) { - this.visitDate = visitDate; - } - - public Boolean getCoughMoreThan2Weeks() { - return coughMoreThan2Weeks; - } - - public void setCoughMoreThan2Weeks(Boolean coughMoreThan2Weeks) { - this.coughMoreThan2Weeks = coughMoreThan2Weeks; - } - - public Boolean getBloodInSputum() { - return bloodInSputum; - } - - public void setBloodInSputum(Boolean bloodInSputum) { - this.bloodInSputum = bloodInSputum; - } - - public Boolean getFeverMoreThan2Weeks() { - return feverMoreThan2Weeks; - } - - public void setFeverMoreThan2Weeks(Boolean feverMoreThan2Weeks) { - this.feverMoreThan2Weeks = feverMoreThan2Weeks; - } - - public Boolean getLossOfWeight() { - return lossOfWeight; - } - - public void setLossOfWeight(Boolean lossOfWeight) { - this.lossOfWeight = lossOfWeight; - } - - public Boolean getNightSweats() { - return nightSweats; - } - - public void setNightSweats(Boolean nightSweats) { - this.nightSweats = nightSweats; - } - - public Boolean getHistoryOfTb() { - return historyOfTb; - } - - public void setHistoryOfTb(Boolean historyOfTb) { - this.historyOfTb = historyOfTb; - } - - public Boolean getTakingAntiTBDrugs() { - return takingAntiTBDrugs; - } - - public void setTakingAntiTBDrugs(Boolean takingAntiTBDrugs) { - this.takingAntiTBDrugs = takingAntiTBDrugs; - } - - public Boolean getFamilySufferingFromTB() { - return familySufferingFromTB; - } - - public void setFamilySufferingFromTB(Boolean familySufferingFromTB) { - this.familySufferingFromTB = familySufferingFromTB; - } } diff --git a/src/main/java/com/iemr/flw/masterEnum/GroupName.java b/src/main/java/com/iemr/flw/masterEnum/GroupName.java index 8d6736eb..e53733b0 100644 --- a/src/main/java/com/iemr/flw/masterEnum/GroupName.java +++ b/src/main/java/com/iemr/flw/masterEnum/GroupName.java @@ -33,3 +33,6 @@ public String getDisplayName() { } + + + diff --git a/src/main/java/com/iemr/flw/masterEnum/IncentiveName.java b/src/main/java/com/iemr/flw/masterEnum/IncentiveName.java new file mode 100644 index 00000000..052ab011 --- /dev/null +++ b/src/main/java/com/iemr/flw/masterEnum/IncentiveName.java @@ -0,0 +1,139 @@ +package com.iemr.flw.masterEnum; + +public enum IncentiveName { + + // ---------------- CHILD HEALTH ---------------- + HBNC_0_42_DAYS(GroupName.CHILD_HEALTH), + HBYC_QUARTERLY_VISITS(GroupName.CHILD_HEALTH), + SNCU_LBW_FOLLOWUP(GroupName.CHILD_HEALTH), + SAM_REFERRAL_NRC(GroupName.CHILD_HEALTH), + CHILD_DEATH_REPORTING(GroupName.CHILD_HEALTH), + E_HBNC_CACHAR(GroupName.CHILD_HEALTH), + MAA_QUARTERLY_MEETING(GroupName.CHILD_HEALTH), + NATIONAL_DEWORMING_DAY(GroupName.CHILD_HEALTH), + ORS_DISTRIBUTION(GroupName.CHILD_HEALTH), + NATIONAL_IRON_PLUS(GroupName.CHILD_HEALTH), + NIPI_CHILDREN(GroupName.CHILD_HEALTH), + + // ---------------- IMMUNIZATION ---------------- + FULL_IMMUNIZATION_0_1(GroupName.IMMUNIZATION), + COMPLETE_IMMUNIZATION_1_2(GroupName.IMMUNIZATION), + DPT_IMMUNIZATION_5_YEARS(GroupName.IMMUNIZATION), + CHILD_MOBILIZATION_SESSIONS(GroupName.IMMUNIZATION), + + // ---------------- MATERNAL HEALTH ---------------- + ANC_REGISTRATION_1ST_TRIM(GroupName.MATERNAL_HEALTH), + FULL_ANC(GroupName.MATERNAL_HEALTH), + COMPREHENSIVE_ABORTION_CARE(GroupName.MATERNAL_HEALTH), + INST_DELIVERY_HRP(GroupName.MATERNAL_HEALTH), + EPMSMA_INST_DELIVERY(GroupName.MATERNAL_HEALTH), + EPMSMA_HRP_IDENTIFIED(GroupName.MATERNAL_HEALTH), + MATERNAL_DEATH_REPORT(GroupName.MATERNAL_HEALTH), + MH_MISOPROSTOL(GroupName.MATERNAL_HEALTH), + MH_EARLY_REG_BANK(GroupName.MATERNAL_HEALTH), + MH_ANC_3RD_TRIM(GroupName.MATERNAL_HEALTH), + MH_MOTIVATE_INST_DEL(GroupName.MATERNAL_HEALTH), + MH_HR_POSTNATAL(GroupName.MATERNAL_HEALTH), + + // ---------------- JSY ---------------- + JSY_1ST_DEL_ANC_RURAL(GroupName.JSY), + JSY_1ST_DEL_INST_RURAL(GroupName.JSY), + JSY_2ND_DEL_ANC_RURAL(GroupName.JSY), + JSY_2ND_DEL_INST_RURAL(GroupName.JSY), + JSY_3RD_DEL_ANC_RURAL(GroupName.JSY), + JSY_3RD_DEL_INST_RURAL(GroupName.JSY), + JSY_4TH_DEL_ANC_RURAL(GroupName.JSY), + JSY_4TH_DEL_INST_RURAL(GroupName.JSY), + JSY_ANC_URBAN(GroupName.JSY), + JSY_INST_URBAN(GroupName.JSY), + + // ---------------- FAMILY PLANNING ---------------- + FP_ANC_MPA1(GroupName.FAMILY_PLANNING), + FP_ANC_MPA2(GroupName.FAMILY_PLANNING), + FP_ANC_MPA3(GroupName.FAMILY_PLANNING), + FP_ANC_MPA4(GroupName.FAMILY_PLANNING), + FP_ANC_MPA5(GroupName.FAMILY_PLANNING), + FIRST_SECOND_CHILD_GAP(GroupName.FAMILY_PLANNING), + FP_DELAY_2Y(GroupName.FAMILY_PLANNING), + FP_LIMIT_2CHILD(GroupName.FAMILY_PLANNING), + FP_PPIUCD(GroupName.FAMILY_PLANNING), + FP_PAIUCD(GroupName.FAMILY_PLANNING), + FP_CONDOM(GroupName.FAMILY_PLANNING), + FP_ORALPILLS(GroupName.FAMILY_PLANNING), + FP_EC(GroupName.FAMILY_PLANNING), + FP_FEMALE_STER(GroupName.FAMILY_PLANNING), + FP_PPS(GroupName.FAMILY_PLANNING), + FP_MINILAP(GroupName.FAMILY_PLANNING), + FP_MALE_STER(GroupName.FAMILY_PLANNING), + FP_EC_SURVEY(GroupName.FAMILY_PLANNING), + FP_SAAS_BAHU(GroupName.FAMILY_PLANNING), + FP_NP_KIT(GroupName.FAMILY_PLANNING), + + // ---------------- ADOLESCENT HEALTH ---------------- + AH_SANITARY(GroupName.ADOLESCENT_HEALTH), + AH_PEER_ED(GroupName.ADOLESCENT_HEALTH), + AH_MOBILIZE(GroupName.ADOLESCENT_HEALTH), + + // ---------------- ASHA ROUTINE ---------------- + ASHA_MONTHLY_ROUTINE(GroupName.ASHA_MONTHLY_ROUTINE), + + // ---------------- UMBRELLA PROGRAMMES ---------------- + NPCB_GOVT_CATARACT(GroupName.UMBRELLA_PROGRAMMES), + NPCB_PRIVATE_CATARACT(GroupName.UMBRELLA_PROGRAMMES), + DSTB_TREATMENT(GroupName.UMBRELLA_PROGRAMMES), + DRTB_TREATMENT(GroupName.UMBRELLA_PROGRAMMES), + INFORMANT_INCENTIVE(GroupName.UMBRELLA_PROGRAMMES), + TPT_PROVIDING(GroupName.UMBRELLA_PROGRAMMES), + BANK_ACCOUNT_NPY(GroupName.UMBRELLA_PROGRAMMES), + HOUSE_TO_HOUSE_SURVEY(GroupName.UMBRELLA_PROGRAMMES), + NLEP_TRAINING(GroupName.UMBRELLA_PROGRAMMES), + NLEP_CASE_DETECTION(GroupName.UMBRELLA_PROGRAMMES), + NLEP_PB_TREATMENT(GroupName.UMBRELLA_PROGRAMMES), + NLEP_MB_TREATMENT(GroupName.UMBRELLA_PROGRAMMES), + LEPROSY_PARTIAL_ASHA(GroupName.UMBRELLA_PROGRAMMES), + NVBDCP_SLIDE_COLLECTION(GroupName.UMBRELLA_PROGRAMMES), + NVBDCP_MALARIA_TREATMENT(GroupName.UMBRELLA_PROGRAMMES), + AES_JE_REFERRAL(GroupName.UMBRELLA_PROGRAMMES), + DENGUE_CHIKUNGUNYA(GroupName.UMBRELLA_PROGRAMMES), + NIDDCP_SALT_TEST(GroupName.UMBRELLA_PROGRAMMES), + + // ---------------- NCD ---------------- + NCD_POP_ENUMERATION(GroupName.NCD), + NCD_FOLLOWUP_TREATMENT(GroupName.NCD), + NCD_NEW_PATIENT_MEDICATION_SUPPORT(GroupName.NCD), + + // ---------------- ADDITIONAL INCENTIVE ---------------- + ADDITIONAL_ASHA_INCENTIVE(GroupName.ADDITIONAL_INCENTIVE), + + // ---------------- OTHER INCENTIVES ---------------- + ABHA_ID_CREATION(GroupName.OTHER_INCENTIVES), + MOBILE_BILL_REIMB(GroupName.OTHER_INCENTIVES), + + // ---------------- ACTIVITY ---------------- + ANC_FOUR_CHECKUPS_SUPPORT(GroupName.ACTIVITY), + INST_DELIVERY_ESCORT(GroupName.ACTIVITY), + FILARIASIS_MEDICINE_DISTRIBUTION(GroupName.ACTIVITY), + VHND_PARTICIPATION(GroupName.ACTIVITY), + CLUSTER_MEETING(GroupName.ACTIVITY), + VHSNC_MEETING(GroupName.ACTIVITY), + MITANIN_REGISTER(GroupName.ACTIVITY), + HWC_REFERRAL_10_CASES(GroupName.ACTIVITY), + LACTATING_MOTHERS_HOME_VISIT(GroupName.ACTIVITY), + MITANIN_REGISTER_5_INFO_FILL(GroupName.ACTIVITY), + HIGH_RISK_POSTPARTUM_HEALTH_CHECK(GroupName.ACTIVITY), + MOSQUITO_NET_DISTRIBUTION_MOBILIZATION(GroupName.ACTIVITY), + HIGH_RISK_POSTPARTUM_CARE(GroupName.ACTIVITY), + MONTHLY_HONORARIUM(GroupName.ACTIVITY), + FULL_ANC_45(GroupName.ACTIVITY), + MH_MOTIVATE_INST_DEL_46(GroupName.ACTIVITY); + + private final GroupName groupName; + + IncentiveName(GroupName groupName) { + this.groupName = groupName; + } + + public GroupName getGroupName() { + return groupName; + } +} diff --git a/src/main/java/com/iemr/flw/repo/identity/BeneficiaryRepo.java b/src/main/java/com/iemr/flw/repo/identity/BeneficiaryRepo.java index 96301fb3..3af9cd6b 100644 --- a/src/main/java/com/iemr/flw/repo/identity/BeneficiaryRepo.java +++ b/src/main/java/com/iemr/flw/repo/identity/BeneficiaryRepo.java @@ -13,6 +13,7 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Optional; +import java.util.stream.Stream; @Repository public interface BeneficiaryRepo extends JpaRepository { @@ -28,10 +29,15 @@ public interface BeneficiaryRepo extends JpaRepository getBenDataWithinDates(@Param("userName") String userName, - @Param("fromDate") Timestamp fromDate, @Param("toDate") Timestamp toDate, Pageable pageable); + + @Query("SELECT t FROM RMNCHMBeneficiaryaddress t " + + "WHERE t.createdDate BETWEEN :fromDate AND :toDate " + + "AND t.createdBy = :userName") + Page getBenDataWithinDates( + @Param("userName") String userName, + @Param("fromDate") Timestamp fromDate, + @Param("toDate") Timestamp toDate, + Pageable pageable); @Query(value = " SELECT t FROM RMNCHMBeneficiaryaddress t WHERE t.createdBy = :userName ") Page getBenDataByUser(@Param("userName") String userName, Pageable pageable); diff --git a/src/main/java/com/iemr/flw/repo/iemr/CdrRepo.java b/src/main/java/com/iemr/flw/repo/iemr/CdrRepo.java index d5e0e711..069362e8 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/CdrRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/CdrRepo.java @@ -14,7 +14,5 @@ public interface CdrRepo extends JpaRepository { CDR findCDRByBenId(Long benId); - @Query(" SELECT c FROM CDR c WHERE c.createdBy = :userId and c.createdDate >= :fromDate and c.createdDate <= :toDate") - List getAllCdrByBenId(@Param("userId") String userId, - @Param("fromDate") Timestamp fromDate, @Param("toDate") Timestamp toDate); + ListfindByCreatedBy(String userName); } diff --git a/src/main/java/com/iemr/flw/repo/iemr/DeliveryOutcomeRepo.java b/src/main/java/com/iemr/flw/repo/iemr/DeliveryOutcomeRepo.java index 643d7c9a..cf09f625 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/DeliveryOutcomeRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/DeliveryOutcomeRepo.java @@ -16,5 +16,7 @@ public interface DeliveryOutcomeRepo extends JpaRepository getDeliveryOutcomeByAshaId(@Param("userId") String userId, @Param("fromDate") Timestamp fromDate, @Param("toDate") Timestamp toDate); + List findByCreatedBy(String userName); + DeliveryOutcome findDeliveryOutcomeByBenIdAndIsActive(Long benId, Boolean isActive); } diff --git a/src/main/java/com/iemr/flw/repo/iemr/EmployeeMasterRepo.java b/src/main/java/com/iemr/flw/repo/iemr/EmployeeMasterRepo.java index d3ac8edf..943b43b1 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/EmployeeMasterRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/EmployeeMasterRepo.java @@ -1,12 +1,14 @@ package com.iemr.flw.repo.iemr; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import com.iemr.flw.domain.iemr.M_User; +import com.iemr.flw.domain.iemr.User; @Repository -public interface EmployeeMasterRepo extends JpaRepository { - M_User findByUserID(Integer userID); - - M_User getUserByUserID(Integer parseLong); +public interface EmployeeMasterRepo extends JpaRepository { + @Query("SELECT u FROM User u WHERE u.userID = :userID and u.deleted=false and u.statusID in (1, 2)") + User findUserByUserID(@Param("userID") Integer userID); } diff --git a/src/main/java/com/iemr/flw/repo/iemr/IncentivePendingActivityRepository.java b/src/main/java/com/iemr/flw/repo/iemr/IncentivePendingActivityRepository.java index 9bac8d21..295d447b 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/IncentivePendingActivityRepository.java +++ b/src/main/java/com/iemr/flw/repo/iemr/IncentivePendingActivityRepository.java @@ -9,10 +9,5 @@ @Repository public interface IncentivePendingActivityRepository extends JpaRepository { - Optional - findByUserIdAndModuleNameAndActivityId( - Integer userId, - String moduleName, - Long activityId - ); + Optional findByMincentiveIdAndActivityId(Long mIncentiveId,Long activityId); } diff --git a/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java b/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java index 6b8db13e..0c2dc21b 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java @@ -9,6 +9,7 @@ import java.sql.Timestamp; import java.util.List; +import java.util.Optional; @Repository public interface IncentiveRecordRepo extends JpaRepository { @@ -16,6 +17,8 @@ public interface IncentiveRecordRepo extends JpaRepository findById(Long id); + @Query("select record from IncentiveActivityRecord record where record.activityId = :id and record.createdDate = :createdDate and record.benId = :benId and record.ashaId = :ashaId") IncentiveActivityRecord findRecordByActivityIdCreatedDateBenId(@Param("id") Long id, @Param("createdDate") Timestamp createdDate, @Param("benId") Long benId,@Param("ashaId") Integer ashaId); diff --git a/src/main/java/com/iemr/flw/repo/iemr/MdsrRepo.java b/src/main/java/com/iemr/flw/repo/iemr/MdsrRepo.java index 532a62c9..127954c6 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/MdsrRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/MdsrRepo.java @@ -14,7 +14,6 @@ public interface MdsrRepo extends JpaRepository { MDSR findMDSRByBenId(Long benId); - @Query(" SELECT m FROM MDSR m WHERE m.createdBy = :userId and m.createdDate >= :fromDate and m.createdDate <= :toDate") - List getAllMdsrByAshaId(@Param("userId") String userId, - @Param("fromDate") Timestamp fromDate, @Param("toDate") Timestamp toDate); + List findByCreatedBy(String userName); + } diff --git a/src/main/java/com/iemr/flw/repo/iemr/PNCVisitRepo.java b/src/main/java/com/iemr/flw/repo/iemr/PNCVisitRepo.java index 063a0795..28675daa 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/PNCVisitRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/PNCVisitRepo.java @@ -12,9 +12,8 @@ @Repository public interface PNCVisitRepo extends JpaRepository { - @Query(value = "SELECT pnc FROM PNCVisit pnc WHERE pnc.createdBy = :userId and pnc.isActive = true and pnc.createdDate >= :fromDate and pnc.createdDate <= :toDate") - List getPNCForPW(@Param("userId") String userId, - @Param("fromDate") Timestamp fromDate, @Param("toDate") Timestamp toDate); + @Query(value = "SELECT pnc FROM PNCVisit pnc WHERE pnc.createdBy = :userId and pnc.isActive = true") + List getPNCForPW(@Param("userId") String userId); PNCVisit findPNCVisitByBenIdAndPncPeriodAndIsActive(Long benId, Integer pncVisit, Boolean isActive); } diff --git a/src/main/java/com/iemr/flw/repo/iemr/TBScreeningRepo.java b/src/main/java/com/iemr/flw/repo/iemr/TBScreeningRepo.java index e2f7fed0..61be2a57 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/TBScreeningRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/TBScreeningRepo.java @@ -15,6 +15,6 @@ public interface TBScreeningRepo extends JpaRepository { @Query(value = "SELECT tbs FROM TBScreening tbs WHERE tbs.benId = :benId and tbs.userId = :userId") TBScreening getByUserIdAndBenId(@Param("benId") Long benId, @Param("userId") Integer userId); - @Query(value = "SELECT tbs FROM TBScreening tbs WHERE tbs.userId = :userId and tbs.visitDate >= :fromDate and tbs.visitDate <= :toDate") - List getByUserId(@Param("userId") Integer userId, @Param("fromDate") Timestamp fromDate, @Param("toDate") Timestamp toDate); + @Query(value = "SELECT tbs FROM TBScreening tbs WHERE tbs.userId = :userId") + List getByUserId(@Param("userId") Integer userId); } diff --git a/src/main/java/com/iemr/flw/service/EmployeeMasterInter.java b/src/main/java/com/iemr/flw/service/EmployeeMasterInter.java index 1c4369da..4e81445c 100644 --- a/src/main/java/com/iemr/flw/service/EmployeeMasterInter.java +++ b/src/main/java/com/iemr/flw/service/EmployeeMasterInter.java @@ -1,13 +1,13 @@ package com.iemr.flw.service; -import com.iemr.flw.domain.iemr.M_User; +import com.iemr.flw.domain.iemr.User; import org.springframework.stereotype.Service; import java.util.List; @Service public interface EmployeeMasterInter { - public M_User getUserDetails(Integer userID); + public User getUserDetails(Integer userID); - List getAllUsers(); + List getAllUsers(); } diff --git a/src/main/java/com/iemr/flw/service/IncentiveLogicService.java b/src/main/java/com/iemr/flw/service/IncentiveLogicService.java new file mode 100644 index 00000000..ead35ffb --- /dev/null +++ b/src/main/java/com/iemr/flw/service/IncentiveLogicService.java @@ -0,0 +1,20 @@ +package com.iemr.flw.service; + +import com.iemr.flw.domain.iemr.IncentiveActivityRecord; +import org.springframework.stereotype.Service; + +import java.util.Date; + +public interface IncentiveLogicService { + public IncentiveActivityRecord incentiveForLeprosyPaucibacillaryConfirmed(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId); + public IncentiveActivityRecord incentiveForIdentificationLeprosy(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId); + public IncentiveActivityRecord incentiveForLeprosyMultibacillaryConfirmed(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId); + + public IncentiveActivityRecord incentiveForVhndMeeting(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId); + + public IncentiveActivityRecord incentiveForClusterMeeting(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId); + public IncentiveActivityRecord incentiveForAttendingVhsnc(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId); + + public IncentiveActivityRecord incentiveForIdentifiedPNC(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId); + +} diff --git a/src/main/java/com/iemr/flw/service/MaaMeetingService.java b/src/main/java/com/iemr/flw/service/MaaMeetingService.java index cb23b7b9..d8fdd82b 100644 --- a/src/main/java/com/iemr/flw/service/MaaMeetingService.java +++ b/src/main/java/com/iemr/flw/service/MaaMeetingService.java @@ -107,8 +107,42 @@ public MaaMeeting updateMeeting(MaaMeetingRequestDTO req) throws JsonProcessingE } checkAndAddIncentive(existingMeeting); + + return repository.save(existingMeeting); + } + + public MaaMeeting updateMeetingFromFileUpload(MaaMeetingRequestDTO req, Long incentiveRecordId) throws JsonProcessingException { + MaaMeeting existingMeeting = repository.findById(req.getId()) + .orElseThrow(() -> new EntityNotFoundException("Meeting not found: " + req.getId())); + + // ✅ NULL CHECK + if (req.getMeetingDate() != null) { + existingMeeting.setMeetingDate(req.getMeetingDate()); + } + if (req.getPlace() != null) { + existingMeeting.setPlace(req.getPlace()); + } + if (req.getParticipants() != null) { + existingMeeting.setParticipants(req.getParticipants()); + } + if (req.getAshaId() != null) { + existingMeeting.setAshaId(req.getAshaId()); + } + if (req.getCreatedBY() != null) { // ✅ Typo fixed: CreatedBY → CreatedBy + existingMeeting.setCreatedBy(req.getCreatedBY()); + } + + // Images - only if provided + if (req.getMeetingImages() != null && req.getMeetingImages().length > 0) { + List base64Images = Arrays.stream(req.getMeetingImages()) + .filter(file -> file != null && !file.isEmpty()) + .map(this::convertToBase64) + .collect(Collectors.toList()); + existingMeeting.setMeetingImagesJson(objectMapper.writeValueAsString(base64Images)); + } + if (existingMeeting.getMeetingImagesJson() != null) { - checkAndUpdateIncentive(existingMeeting); + checkAndUpdateIncentive(incentiveRecordId); } return repository.save(existingMeeting); @@ -160,29 +194,20 @@ public List getAllMeetings(GetBenRequestHandler getBenReq }).collect(Collectors.toList()); } - private void updatePendingActivity(Integer userId, Long recordId, Long activityId, String moduleName) { + private void updatePendingActivity(Integer userId, Long recordId, Long activityId, Long mIncentiveId) { IncentivePendingActivity incentivePendingActivity = new IncentivePendingActivity(); incentivePendingActivity.setActivityId(activityId); incentivePendingActivity.setRecordId(recordId); incentivePendingActivity.setUserId(userId); - incentivePendingActivity.setModuleName(moduleName); + incentivePendingActivity.setMincentiveId(mIncentiveId); if (incentivePendingActivity != null) { incentivePendingActivityRepository.save(incentivePendingActivity); } } - private void checkAndUpdateIncentive(MaaMeeting meeting) { - IncentiveActivity incentiveActivityAM = incentivesRepo.findIncentiveMasterByNameAndGroup("MAA_QUARTERLY_MEETING", GroupName.CHILD_HEALTH.getDisplayName()); - IncentiveActivity incentiveActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("MAA_QUARTERLY_MEETING", GroupName.ACTIVITY.getDisplayName()); - if (incentiveActivityAM != null) { - updateIncentive(incentiveActivityAM, meeting); - } - if (incentiveActivityCH != null) { - updateIncentive(incentiveActivityCH, meeting); - - } - + private void checkAndUpdateIncentive(Long incentiveId) { + updateIncentive(incentiveId); } private void checkAndAddIncentive(MaaMeeting meeting) { @@ -213,29 +238,34 @@ record = new IncentiveActivityRecord(); record.setUpdatedBy(meeting.getCreatedBy()); record.setBenId(0L); record.setAshaId(meeting.getAshaId()); + record.setAmount(Long.valueOf(incentiveActivity.getRate())); + if (meeting.getMeetingImagesJson() != null) { record.setIsEligible(true); + recordRepo.save(record); + } else { record.setIsEligible(false); - // updatePendingActivity(meeting.getAshaId(), meeting.getId(), record.getId(), "MAA_MEETING"); + IncentiveActivityRecord activityRecord = recordRepo.save(record); + if (activityRecord != null) { + updatePendingActivity(meeting.getAshaId(), meeting.getId(), activityRecord.getId(), incentiveActivity.getId()); + + } } - record.setAmount(Long.valueOf(incentiveActivity.getRate())); - recordRepo.save(record); } } - private void updateIncentive(IncentiveActivity incentiveActivity, MaaMeeting meeting) { - IncentiveActivityRecord record = recordRepo - .findRecordByActivityIdCreatedDateBenId(incentiveActivity.getId(), Timestamp.valueOf(meeting.getMeetingDate().atStartOfDay()), 0L, meeting.getAshaId()); + private void updateIncentive(Long id) { - if (record != null) { - record = new IncentiveActivityRecord(); + Optional optionalRecord = recordRepo.findById(id); + + if (optionalRecord.isPresent()) { + IncentiveActivityRecord record = optionalRecord.get(); record.setIsEligible(true); recordRepo.save(record); } - } diff --git a/src/main/java/com/iemr/flw/service/UwinSessionService.java b/src/main/java/com/iemr/flw/service/UwinSessionService.java index 3f6ddf0a..ce4185c3 100644 --- a/src/main/java/com/iemr/flw/service/UwinSessionService.java +++ b/src/main/java/com/iemr/flw/service/UwinSessionService.java @@ -1,5 +1,6 @@ package com.iemr.flw.service; +import com.iemr.flw.domain.iemr.UwinSession; import com.iemr.flw.dto.iemr.UwinSessionRequestDTO; import com.iemr.flw.dto.iemr.UwinSessionResponseDTO; @@ -7,5 +8,6 @@ public interface UwinSessionService { UwinSessionResponseDTO saveSession(UwinSessionRequestDTO req) throws Exception; + UwinSession updateSession(UwinSessionRequestDTO req, Long recordId,Long activityId) throws Exception; List getSessionsByAsha(Integer ashaId) throws Exception; } diff --git a/src/main/java/com/iemr/flw/service/impl/AshaProfileImpl.java b/src/main/java/com/iemr/flw/service/impl/AshaProfileImpl.java index 29ca30da..df86d7ec 100644 --- a/src/main/java/com/iemr/flw/service/impl/AshaProfileImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/AshaProfileImpl.java @@ -1,19 +1,15 @@ package com.iemr.flw.service.impl; import com.iemr.flw.domain.iemr.AshaWorker; -import com.iemr.flw.domain.iemr.M_User; +import com.iemr.flw.domain.iemr.User; import com.iemr.flw.repo.iemr.AshaProfileRepo; import com.iemr.flw.repo.iemr.UserServiceRoleRepo; import com.iemr.flw.service.AshaProfileService; import com.iemr.flw.service.EmployeeMasterInter; import com.iemr.flw.repo.iemr.EmployeeMasterRepo; -import com.iemr.flw.service.AshaProfileService; -import com.iemr.flw.service.EmployeeMasterInter; import com.iemr.flw.utils.JwtAuthenticationUtil; import com.iemr.flw.utils.JwtUtil; -import com.iemr.flw.utils.exception.IEMRException; -import io.jsonwebtoken.Claims; import jakarta.transaction.Transactional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,10 +20,6 @@ import java.util.Objects; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Service; - -import java.util.Objects; -import java.util.concurrent.TimeUnit; @Service public class AshaProfileImpl implements AshaProfileService { @@ -96,7 +88,7 @@ public AshaWorker getProfileData(Integer userId) { private AshaWorker getDetails(Integer userID) { try { - M_User m_user = Objects.requireNonNull(employeeMasterInter.getUserDetails(userID), "User details not found for ID: " + userID); + User m_user = Objects.requireNonNull(employeeMasterInter.getUserDetails(userID), "User details not found for ID: " + userID); AshaWorker ashaWorker = new AshaWorker(); ashaWorker.setEmployeeId(m_user.getUserID()); // Convert DOB (Timestamp) to LocalDate diff --git a/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java index f5a75785..6601186f 100644 --- a/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java @@ -389,6 +389,7 @@ private String getMappingsForAddressIDs(List addressLi resultMap.put("beneficiaryDetails", benDetailsRMNCH_OBJ); resultMap.put("abhaHealthDetails", healthDetails); + resultMap.put("BenRegId", m.getBenRegId()); resultMap.put("houseoldId", benDetailsRMNCH_OBJ.getHouseoldId()); resultMap.put("benficieryid", benDetailsRMNCH_OBJ.getBenficieryid()); resultMap.put("isDeath", benDetailsRMNCH_OBJ.getIsDeath()); @@ -406,7 +407,6 @@ private String getMappingsForAddressIDs(List addressLi resultMap.put("doYouHavechildren", benDetailsRMNCH_OBJ.getDoYouHavechildren()); resultMap.put("noofAlivechildren",benDetailsRMNCH_OBJ.getNoofAlivechildren()); resultMap.put("isDeactivate",benDetailsRMNCH_OBJ.getIsDeactivate()); - resultMap.put("BenRegId", m.getBenRegId()); // adding asha id / created by - user id if (benAddressOBJ.getCreatedBy() != null) { @@ -438,33 +438,33 @@ private String getMappingsForAddressIDs(List addressLi } - private Map getBenHealthDetails(BigInteger benRegId) { - Map healthDetails = new HashMap<>(); - if (null != benRegId) { - Object[] benHealthIdNumber = beneficiaryRepo.getBenHealthIdNumber(benRegId); - if (benHealthIdNumber != null && benHealthIdNumber.length > 0) { - Object[] healthData = (Object[]) benHealthIdNumber[0]; - String healthIdNumber = healthData[0] != null ? healthData[0].toString() : null; - String healthId = healthData[1] != null ? healthData[1].toString() : null; - - if (null != healthIdNumber) { - List health = beneficiaryRepo.getBenHealthDetails(healthIdNumber); - if (health != null && !health.isEmpty()) { - for (Object[] objects : health) { - healthDetails.put("HealthID", objects[0]); - healthDetails.put("HealthIdNumber", objects[1]); - healthDetails.put("isNewAbha", objects[2]); - } - } else { - healthDetails.put("HealthIdNumber", healthIdNumber); - healthDetails.put("HealthID", healthId); - healthDetails.put("isNewAbha", null); - } - } - } - } - return healthDetails; - } + private Map getBenHealthDetails(BigInteger benRegId) { + Map healthDetails = new HashMap<>(); + if (null != benRegId) { + Object[] benHealthIdNumber = beneficiaryRepo.getBenHealthIdNumber(benRegId); + if (benHealthIdNumber != null && benHealthIdNumber.length > 0) { + Object[] healthData = (Object[]) benHealthIdNumber[0]; + String healthIdNumber = healthData[0] != null ? healthData[0].toString() : null; + String healthId = healthData[1] != null ? healthData[1].toString() : null; + + if (null != healthIdNumber) { + List health = beneficiaryRepo.getBenHealthDetails(healthIdNumber); + if (health != null && !health.isEmpty()) { + for (Object[] objects : health) { + healthDetails.put("HealthID", objects[0]); + healthDetails.put("HealthIdNumber", objects[1]); + healthDetails.put("isNewAbha", objects[2]); + } + } else { + healthDetails.put("HealthIdNumber", healthIdNumber); + healthDetails.put("HealthID", healthId); + healthDetails.put("isNewAbha", null); + } + } + } + } + return healthDetails; + } private Map getBenBenVisitDetails(BigInteger benRegId) { Map healthDetails = new HashMap<>(); @@ -482,7 +482,7 @@ private Map getBenBenVisitDetails(BigInteger benRegId) { return healthDetails; } - public void fetchHealthIdByBenRegID(Long benRegID, String authorization, Map resultMap) { + public void fetchHealthIdByBenRegID(Long benRegID, String authorization, Map resultMap) { Map requestMap = new HashMap(); requestMap.put("beneficiaryRegID", benRegID); requestMap.put("beneficiaryID", null); diff --git a/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java index 43a9eb1f..a33f5078 100644 --- a/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java @@ -7,10 +7,12 @@ import com.iemr.flw.dto.identity.GetBenRequestHandler; import com.iemr.flw.dto.iemr.*; import com.iemr.flw.masterEnum.GroupName; +import com.iemr.flw.masterEnum.StateCode; import com.iemr.flw.repo.identity.BeneficiaryRepo; import com.iemr.flw.repo.iemr.*; import com.iemr.flw.service.ChildCareService; import com.iemr.flw.utils.JwtUtil; +import jakarta.persistence.EntityNotFoundException; import org.aspectj.weaver.ast.Or; import org.modelmapper.ModelMapper; import org.slf4j.Logger; @@ -75,6 +77,8 @@ public class ChildCareServiceImpl implements ChildCareService { @Autowired private OrsDistributionRepo orsDistributionRepo; + @Autowired + private IncentivePendingActivityRepository incentivePendingActivityRepository; @Override @@ -544,7 +548,8 @@ public List getSamVisitsByBeneficiary(GetBenRequestHandler reque try { List followUpDates = mapper.readValue( entity.getFollowUpVisitDate(), - new TypeReference>() {}); + new TypeReference>() { + }); dto.setFollowUpVisitDate(followUpDates); } catch (JsonProcessingException e) { throw new RuntimeException(e); @@ -559,7 +564,6 @@ public List getSamVisitsByBeneficiary(GetBenRequestHandler reque } - return samResponseListDTO; } @@ -576,25 +580,25 @@ public String saveOrsDistributionDetails(List orsDistributio orsDistribution.setChildCount(orsDistributionDTO.getFields().getNum_under5_children().toString()); orsDistribution.setHouseholdId(orsDistributionDTO.getHouseHoldId()); orsDistribution.setUserId(userRepo.getUserIdByName(orsDistributionDTO.getUserName())); - orsDistribution.setVisitDate(LocalDate.parse(orsDistributionDTO.getFields().getVisit_date(),formatter)); + orsDistribution.setVisitDate(LocalDate.parse(orsDistributionDTO.getFields().getVisit_date(), formatter)); orsDistributionList.add(orsDistribution); }); - logger.info("orsList"+orsDistributionList.size()); - if(!orsDistributionList.isEmpty()){ + logger.info("orsList" + orsDistributionList.size()); + if (!orsDistributionList.isEmpty()) { orsDistributionRepo.saveAll(orsDistributionList); checkAndAddOrdDistributionIncentive(orsDistributionList); return "Saved " + orsDistributionList.size() + " ORS visit records successfully"; } - }catch (Exception e){ - logger.error("ORS Error"+e); + } catch (Exception e) { + logger.error("ORS Error" + e); } - return null ; + return null; } @@ -603,7 +607,7 @@ public List getOrdDistrubtion(GetBenRequestHandler r List entities = orsDistributionRepo.findByUserId(request.getAshaId()); List orsDistributionResponseDTOSList = new ArrayList<>(); - for(OrsDistribution orsDistribution: entities){ + for (OrsDistribution orsDistribution : entities) { OrsDistributionResponseDTO orsDistributionResponseDTO = new OrsDistributionResponseDTO(); OrsDistributionResponseListDTO orsDistributionResponseListDTO = new OrsDistributionResponseListDTO(); @@ -617,9 +621,8 @@ public List getOrdDistrubtion(GetBenRequestHandler r orsDistributionResponseDTOSList.add(orsDistributionResponseDTO); - } - return orsDistributionResponseDTOSList; + return orsDistributionResponseDTOSList; } @@ -633,11 +636,13 @@ private LocalDate parseDate(String dateStr) { for (DateTimeFormatter f : formatters) { try { return LocalDate.parse(dateStr, f); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } throw new DateTimeParseException("Invalid date format: " + dateStr, dateStr, 0); } + @Override public List saveAllIfa(List dtoList) { return dtoList.stream() @@ -647,16 +652,16 @@ public List saveAllIfa(List dtoList) { } - @Override public List getByBeneficiaryId(GetBenRequestHandler requestHandler) { return ifaDistributionRepository.findByUserId(requestHandler.getAshaId()).stream() .map(this::mapToDTO) .toList(); } + // 🔁 Entity → DTO (date formatted as dd-MM-yyyy) private IfaDistributionDTO mapToDTO(IfaDistribution entity) { - final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd-MM-yyyy"); IfaDistributionDTO dto = new IfaDistributionDTO(); @@ -707,20 +712,20 @@ private IfaDistribution mapToEntity(IfaDistributionDTO dto) { return entity; } - private void checkAndAddSamVisitNRCReferalIncentive(List samVisits){ + private void checkAndAddSamVisitNRCReferalIncentive(List samVisits) { samVisits.forEach(samVisit -> { IncentiveActivity samreferralnrcActivityAm = incentivesRepo.findIncentiveMasterByNameAndGroup("SAM_REFERRAL_NRC", GroupName.CHILD_HEALTH.getDisplayName()); - IncentiveActivity samreferralnrcActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("SAM_REFERRAL_NRC", GroupName.ACTIVITY.getDisplayName()); - if(samreferralnrcActivityAm!=null){ - if(samVisit.getIsChildReferredNrc().equals("Yes")){ - createIncentiveRecordforSamReferalToNrc(samVisit,samVisit.getBeneficiaryId(),samreferralnrcActivityAm,jwtUtil.getUserNameFromStorage()); + IncentiveActivity samreferralnrcActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("SAM_REFERRAL_NRC", GroupName.ACTIVITY.getDisplayName()); + if (samreferralnrcActivityAm != null) { + if (samVisit.getIsChildReferredNrc().equals("Yes")) { + createIncentiveRecordforSamReferalToNrc(samVisit, samVisit.getBeneficiaryId(), samreferralnrcActivityAm, jwtUtil.getUserNameFromStorage()); } } - if(samreferralnrcActivityCH!=null){ - if(samVisit.getIsChildReferredNrc().equals("Yes")){ - createIncentiveRecordforSamReferalToNrc(samVisit,samVisit.getBeneficiaryId(),samreferralnrcActivityCH,jwtUtil.getUserNameFromStorage()); + if (samreferralnrcActivityCH != null) { + if (samVisit.getIsChildReferredNrc().equals("Yes")) { + createIncentiveRecordforSamReferalToNrc(samVisit, samVisit.getBeneficiaryId(), samreferralnrcActivityCH, jwtUtil.getUserNameFromStorage()); } } @@ -728,20 +733,21 @@ private void checkAndAddSamVisitNRCReferalIncentive(List samVisits){ }); } - private void checkAndAddOrdDistributionIncentive(List orsDistributionList){ + + private void checkAndAddOrdDistributionIncentive(List orsDistributionList) { orsDistributionList.forEach(orsDistribution -> { IncentiveActivity orsPacketActivityAM = incentivesRepo.findIncentiveMasterByNameAndGroup("ORS_DISTRIBUTION", GroupName.CHILD_HEALTH.getDisplayName()); - IncentiveActivity orsPacketActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("ORS_DISTRIBUTION", GroupName.ACTIVITY.getDisplayName()); - if(orsPacketActivityAM!=null){ - if(orsDistribution.getNumOrsPackets()!=null){ - createIncentiveRecordforOrsDistribution(orsDistribution,orsDistribution.getBeneficiaryId(),orsPacketActivityAM,userRepo.getUserNamedByUserId(orsDistribution.getUserId()),false); + IncentiveActivity orsPacketActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("ORS_DISTRIBUTION", GroupName.ACTIVITY.getDisplayName()); + if (orsPacketActivityAM != null) { + if (orsDistribution.getNumOrsPackets() != null) { + createIncentiveRecordforOrsDistribution(orsDistribution, orsDistribution.getBeneficiaryId(), orsPacketActivityAM, userRepo.getUserNamedByUserId(orsDistribution.getUserId()), false); } } - if(orsPacketActivityCH!=null){ - if(orsDistribution.getNumOrsPackets()!=null){ - createIncentiveRecordforOrsDistribution(orsDistribution,orsDistribution.getBeneficiaryId(),orsPacketActivityCH,userRepo.getUserNamedByUserId(orsDistribution.getUserId()),true); + if (orsPacketActivityCH != null) { + if (orsDistribution.getNumOrsPackets() != null) { + createIncentiveRecordforOrsDistribution(orsDistribution, orsDistribution.getBeneficiaryId(), orsPacketActivityCH, userRepo.getUserNamedByUserId(orsDistribution.getUserId()), true); } } @@ -772,9 +778,6 @@ private void checkAndAddHbyncIncentives(List hbycList) { } - - - if (hbyncOrsPacketActivityCH != null) { if (hbyc.getOrs_given()) { createIncentiveRecordforHbyncOrsDistribution(hbyc, hbyc.getBeneficiaryId(), hbyncOrsPacketActivityCH, hbyc.getCreated_by()); @@ -790,35 +793,38 @@ private void checkAndAddHbyncIncentives(List hbycList) { private void checkAndAddHbncIncentives(List hbncVisits) { hbncVisits.forEach(hbncVisit -> { - boolean isVisitDone = List.of("1st Day", "3rd Day", "7th Day", "42nd Day") - .stream() - .allMatch(hbncVisits::contains); + GroupName.setIsCh(false); Long benId = hbncVisit.getBeneficiaryId(); - if (hbncVisit.getVisit_day().equals("42nd Day")) { - IncentiveActivity visitActivityAM = incentivesRepo.findIncentiveMasterByNameAndGroup("HBNC_0_42_DAYS", GroupName.CHILD_HEALTH.getDisplayName()); - IncentiveActivity visitActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("HBNC_0_42_DAYS", GroupName.ACTIVITY.getDisplayName()); + Integer stateId = userRepo.getUserRole(hbncVisit.getAshaId()).get(0).getStateId(); - createIncentiveRecordforHbncVisit(hbncVisit, benId, visitActivityAM, "HBNC_0_42_DAYS"); - createIncentiveRecordforHbncVisit(hbncVisit, benId, visitActivityCH, "HBNC_0_42_DAYS_CH"); + if (hbncVisit.getVisit_day().equals("42nd Day")) { + if (stateId != null && stateId.equals(com.iemr.flw.masterEnum.StateCode.AM.getStateCode())) { + IncentiveActivity visitActivityAM = incentivesRepo.findIncentiveMasterByNameAndGroup("HBNC_0_42_DAYS", GroupName.CHILD_HEALTH.getDisplayName()); + createIncentiveRecordforHbncVisit(hbncVisit, benId, visitActivityAM, "HBNC_0_42_DAYS"); + } else if (stateId != null && stateId.equals(com.iemr.flw.masterEnum.StateCode.CG.getStateCode())) { + IncentiveActivity visitActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("HBNC_0_42_DAYS", GroupName.ACTIVITY.getDisplayName()); + createIncentiveRecordforHbncVisit(hbncVisit, benId, visitActivityCH, "HBNC_0_42_DAYS_CH"); + } } logger.info("getDischarged_from_sncu" + hbncVisit.getDischarged_from_sncu()); + if (stateId != null && stateId.equals(com.iemr.flw.masterEnum.StateCode.AM.getStateCode())) { + if (hbncVisit.getVisit_day().equals("42nd Day") && hbncVisit.getDischarged_from_sncu() && hbncVisit.getBaby_weight() <= 2.5) { + IncentiveActivity babyDisChargeSNCUAActivity = + incentivesRepo.findIncentiveMasterByNameAndGroup("SNCU_LBW_FOLLOWUP", GroupName.CHILD_HEALTH.getDisplayName()); - if (hbncVisit.getVisit_day().equals("42nd Day") && hbncVisit.getDischarged_from_sncu() && hbncVisit.getBaby_weight() <=2.5) { - IncentiveActivity babyDisChargeSNCUAActivity = - incentivesRepo.findIncentiveMasterByNameAndGroup("SNCU_LBW_FOLLOWUP", GroupName.CHILD_HEALTH.getDisplayName()); + createIncentiveRecordforHbncVisit(hbncVisit, benId, babyDisChargeSNCUAActivity, "SNCU_LBW_FOLLOWUP"); - createIncentiveRecordforHbncVisit(hbncVisit, benId, babyDisChargeSNCUAActivity, "SNCU_LBW_FOLLOWUP"); - - } - logger.info("getIs_baby_alive" + hbncVisit.getIs_baby_alive()); - if (!hbncVisit.getIs_baby_alive()) { - IncentiveActivity isChildDeathActivity = - incentivesRepo.findIncentiveMasterByNameAndGroup("CHILD_DEATH_REPORTING", GroupName.CHILD_HEALTH.getDisplayName()); + } + logger.info("getIs_baby_alive" + hbncVisit.getIs_baby_alive()); + if (!hbncVisit.getIs_baby_alive()) { + IncentiveActivity isChildDeathActivity = + incentivesRepo.findIncentiveMasterByNameAndGroup("CHILD_DEATH_REPORTING", GroupName.CHILD_HEALTH.getDisplayName()); - createIncentiveRecordforHbncVisit(hbncVisit, benId, isChildDeathActivity, "CHILD_DEATH_REPORTING"); + createIncentiveRecordforHbncVisit(hbncVisit, benId, isChildDeathActivity, "CHILD_DEATH_REPORTING"); + } } @@ -834,48 +840,71 @@ private void checkAndAddIncentives(List vaccinationList) { vaccinationList.forEach(vaccination -> { Long benId = beneficiaryRepo.getBenIdFromRegID(vaccination.getBeneficiaryRegId()).longValue(); Integer userId = userRepo.getUserIdByName(vaccination.getCreatedBy()); + Integer stateId = userRepo.getUserRole(userId).get(0).getStateId(); Integer immunizationServiceId = getImmunizationServiceIdForVaccine(vaccination.getVaccineId().shortValue()); if (immunizationServiceId < 6) { - IncentiveActivity immunizationActivityAM = - incentivesRepo.findIncentiveMasterByNameAndGroup("FULL_IMMUNIZATION_0_1", GroupName.IMMUNIZATION.getDisplayName()); - IncentiveActivity immunizationActivityCH = - incentivesRepo.findIncentiveMasterByNameAndGroup("FULL_IMMUNIZATION_0_1", GroupName.ACTIVITY.getDisplayName()); + if (stateId != null && stateId.equals(StateCode.AM.getStateCode())) { + IncentiveActivity immunizationActivityAM = + incentivesRepo.findIncentiveMasterByNameAndGroup("FULL_IMMUNIZATION_0_1", GroupName.IMMUNIZATION.getDisplayName()); + + if (immunizationActivityAM != null && childVaccinationRepo.getFirstYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) + .equals(childVaccinationRepo.getFirstYearVaccineCount())) { + + createIncentiveRecord(vaccination, benId, userId, immunizationActivityAM); + } - if (immunizationActivityAM != null && childVaccinationRepo.getFirstYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) - .equals(childVaccinationRepo.getFirstYearVaccineCount())) { - createIncentiveRecord(vaccination, benId, userId, immunizationActivityAM); } + if (stateId != null && stateId.equals(StateCode.CG.getStateCode())) { + IncentiveActivity immunizationActivityCH = + incentivesRepo.findIncentiveMasterByNameAndGroup("FULL_IMMUNIZATION_0_1", GroupName.ACTIVITY.getDisplayName()); + - if (immunizationActivityCH != null && childVaccinationRepo.getFirstYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) - .equals(childVaccinationRepo.getFirstYearVaccineCount())) { - createIncentiveRecord(vaccination, benId, userId, immunizationActivityCH); + if (immunizationActivityCH != null && childVaccinationRepo.getFirstYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) + .equals(childVaccinationRepo.getFirstYearVaccineCount())) { + createIncentiveRecord(vaccination, benId, userId, immunizationActivityCH); + } } + + } else if (immunizationServiceId == 7) { - IncentiveActivity immunizationActivity2AM = - incentivesRepo.findIncentiveMasterByNameAndGroup("COMPLETE_IMMUNIZATION_1_2", GroupName.IMMUNIZATION.getDisplayName()); - IncentiveActivity immunizationActivity2CH = - incentivesRepo.findIncentiveMasterByNameAndGroup("COMPLETE_IMMUNIZATION_1_2", GroupName.ACTIVITY.getDisplayName()); - if (immunizationActivity2AM != null && childVaccinationRepo.getSecondYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) - .equals(childVaccinationRepo.getSecondYearVaccineCount())) { - createIncentiveRecord(vaccination, benId, userId, immunizationActivity2AM); + if (stateId != null && stateId.equals(StateCode.AM.getStateCode())) { + IncentiveActivity immunizationActivity2AM = + incentivesRepo.findIncentiveMasterByNameAndGroup("COMPLETE_IMMUNIZATION_1_2", GroupName.IMMUNIZATION.getDisplayName()); + if (immunizationActivity2AM != null && childVaccinationRepo.getSecondYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) + .equals(childVaccinationRepo.getSecondYearVaccineCount())) { + createIncentiveRecord(vaccination, benId, userId, immunizationActivity2AM); + } } - if (immunizationActivity2CH != null && childVaccinationRepo.getSecondYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) - .equals(childVaccinationRepo.getSecondYearVaccineCount())) { - createIncentiveRecord(vaccination, benId, userId, immunizationActivity2CH); + + if (stateId != null && stateId.equals(StateCode.CG.getStateCode())) { + IncentiveActivity immunizationActivity2CH = + incentivesRepo.findIncentiveMasterByNameAndGroup("COMPLETE_IMMUNIZATION_1_2", GroupName.ACTIVITY.getDisplayName()); + if (immunizationActivity2CH != null && childVaccinationRepo.getSecondYearVaccineCountForBenId(vaccination.getBeneficiaryRegId()) + .equals(childVaccinationRepo.getSecondYearVaccineCount())) { + createIncentiveRecord(vaccination, benId, userId, immunizationActivity2CH); + } } + + } - IncentiveActivity immunizationActivity5AM = - incentivesRepo.findIncentiveMasterByNameAndGroup("DPT_IMMUNIZATION_5_YEARS", GroupName.IMMUNIZATION.getDisplayName()); - if (immunizationActivity5AM != null && childVaccinationRepo.checkDptVaccinatedUser(vaccination.getBeneficiaryRegId()) == 1) { - createIncentiveRecord(vaccination, benId, userId, immunizationActivity5AM); + if (stateId != null && stateId.equals(StateCode.AM.getStateCode())) { + IncentiveActivity immunizationActivity5AM = + incentivesRepo.findIncentiveMasterByNameAndGroup("DPT_IMMUNIZATION_5_YEARS", GroupName.IMMUNIZATION.getDisplayName()); + if (immunizationActivity5AM != null && childVaccinationRepo.checkDptVaccinatedUser(vaccination.getBeneficiaryRegId()) == 1) { + createIncentiveRecord(vaccination, benId, userId, immunizationActivity5AM); + } + } + if (stateId != null && stateId.equals(StateCode.CG.getStateCode())) { - IncentiveActivity immunizationActivity5CH = - incentivesRepo.findIncentiveMasterByNameAndGroup("DPT_IMMUNIZATION_5_YEARS", GroupName.ACTIVITY.getDisplayName()); - if (immunizationActivity5CH != null && childVaccinationRepo.checkDptVaccinatedUser(vaccination.getBeneficiaryRegId()) == 1) { - createIncentiveRecord(vaccination, benId, userId, immunizationActivity5CH); + IncentiveActivity immunizationActivity5CH = + incentivesRepo.findIncentiveMasterByNameAndGroup("DPT_IMMUNIZATION_5_YEARS", GroupName.ACTIVITY.getDisplayName()); + if (immunizationActivity5CH != null && childVaccinationRepo.checkDptVaccinatedUser(vaccination.getBeneficiaryRegId()) == 1) { + createIncentiveRecord(vaccination, benId, userId, immunizationActivity5CH); + } } + }); } @@ -923,11 +952,71 @@ record = new IncentiveActivityRecord(); record.setUpdatedBy(hbncVisit.getCreatedBy()); record.setBenId(benId); record.setAshaId(hbncVisit.getAshaId()); + if (hbncVisit.getDischarge_summary_upload() == null || hbncVisit.getDischarge_summary_upload().isEmpty()) { + record.setIsEligible(false); + } else { + record.setIsEligible(false); + updatePendingActivity(hbncVisit.getAshaId(), hbncVisit.getId(), record.getActivityId(), immunizationActivity.getId()); + + } record.setAmount(Long.valueOf(immunizationActivity.getRate())); recordRepo.save(record); } } + private void updatePendingActivity(Integer userId, Long recordId, Long activityId, Long mIncentiveId) { + IncentivePendingActivity incentivePendingActivity = new IncentivePendingActivity(); + incentivePendingActivity.setActivityId(activityId); + incentivePendingActivity.setRecordId(recordId); + incentivePendingActivity.setUserId(userId); + incentivePendingActivity.setMincentiveId(mIncentiveId); + if (incentivePendingActivity != null) { + incentivePendingActivityRepository.save(incentivePendingActivity); + } + + } + + public HbncVisit updateHbncFromFileUpload(MultipartFile[] dischargeSncuImage, Long incentiveRecordId, Long id) throws JsonProcessingException { + HbncVisit existingHbncVisit = hbncVisitRepo.findById(id) + .orElseThrow(() -> new EntityNotFoundException("Meeting not found: " + id)); + + + // Images - only if provided + if (dischargeSncuImage != null && dischargeSncuImage.length > 0) { + List base64Images = Arrays.stream(dischargeSncuImage) + .filter(file -> file != null && !file.isEmpty()) + .map(this::convertToBase64) + .collect(Collectors.toList()); + existingHbncVisit.setDischarge_summary_upload(mapper.writeValueAsString(base64Images)); + } + + if (existingHbncVisit.getDischarge_summary_upload() != null) { + updateIncentive(incentiveRecordId); + + } + return hbncVisitRepo.save(existingHbncVisit); + } + + private void updateIncentive(Long id) { + + Optional optionalRecord = recordRepo.findById(id); + + if (optionalRecord.isPresent()) { + IncentiveActivityRecord record = optionalRecord.get(); + record.setIsEligible(true); + recordRepo.save(record); + } + } + + + private String convertToBase64(MultipartFile file) { + try { + return Base64.getEncoder().encodeToString(file.getBytes()); + } catch (IOException e) { + throw new RuntimeException("Failed to convert image to Base64: " + file.getOriginalFilename(), e); + } + } + private void createIncentiveRecordforHbyncVisit(HbycChildVisit data, Long benId, IncentiveActivity immunizationActivity, String createdBy) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); @@ -987,40 +1076,40 @@ record = new IncentiveActivityRecord(); } } - private void createIncentiveRecordforOrsDistribution(OrsDistribution data, Long benId, IncentiveActivity immunizationActivity, String createdBy,boolean isCH) { - try { - // Convert to LocalDate - Timestamp visitDate = Timestamp.valueOf(data.getVisitDate().atStartOfDay()); - IncentiveActivityRecord record = recordRepo - .findRecordByActivityIdCreatedDateBenId(immunizationActivity.getId(), visitDate, benId); - double packets = Double.parseDouble(data.getNumOrsPackets()); - double rate = immunizationActivity.getRate(); - - if (record == null) { - - record = new IncentiveActivityRecord(); - record.setActivityId(immunizationActivity.getId()); - record.setCreatedDate(visitDate); - record.setCreatedBy(createdBy); - record.setStartDate(visitDate); - record.setEndDate(visitDate); - record.setUpdatedDate(visitDate); - record.setUpdatedBy(createdBy); - record.setBenId(benId); - record.setAshaId(beneficiaryRepo.getUserIDByUserName(createdBy)); - if(isCH){ - record.setAmount((long) rate); - - }else { - record.setAmount((long) (rate * packets)); - - } - recordRepo.save(record); - } - }catch (Exception e){ - logger.error("Exp"+e.getMessage()); - - } + private void createIncentiveRecordforOrsDistribution(OrsDistribution data, Long benId, IncentiveActivity immunizationActivity, String createdBy, boolean isCH) { + try { + // Convert to LocalDate + Timestamp visitDate = Timestamp.valueOf(data.getVisitDate().atStartOfDay()); + IncentiveActivityRecord record = recordRepo + .findRecordByActivityIdCreatedDateBenId(immunizationActivity.getId(), visitDate, benId); + double packets = Double.parseDouble(data.getNumOrsPackets()); + double rate = immunizationActivity.getRate(); + + if (record == null) { + + record = new IncentiveActivityRecord(); + record.setActivityId(immunizationActivity.getId()); + record.setCreatedDate(visitDate); + record.setCreatedBy(createdBy); + record.setStartDate(visitDate); + record.setEndDate(visitDate); + record.setUpdatedDate(visitDate); + record.setUpdatedBy(createdBy); + record.setBenId(benId); + record.setAshaId(beneficiaryRepo.getUserIDByUserName(createdBy)); + if (isCH) { + record.setAmount((long) rate); + + } else { + record.setAmount((long) (rate * packets)); + + } + recordRepo.save(record); + } + } catch (Exception e) { + logger.error("Exp" + e.getMessage()); + + } } @@ -1046,8 +1135,8 @@ record = new IncentiveActivityRecord(); record.setAmount((long) incentiveActivity.getRate()); recordRepo.save(record); } - }catch (Exception e){ - logger.error("Exp"+e.getMessage()); + } catch (Exception e) { + logger.error("Exp" + e.getMessage()); } diff --git a/src/main/java/com/iemr/flw/service/impl/DeathReportsServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/DeathReportsServiceImpl.java index 82cee5d0..15d7fc1a 100644 --- a/src/main/java/com/iemr/flw/service/impl/DeathReportsServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/DeathReportsServiceImpl.java @@ -7,15 +7,19 @@ import com.iemr.flw.dto.iemr.CdrDTO; import com.iemr.flw.dto.iemr.MdsrDTO; import com.iemr.flw.masterEnum.GroupName; +import com.iemr.flw.masterEnum.StateCode; import com.iemr.flw.repo.identity.BeneficiaryRepo; import com.iemr.flw.repo.iemr.*; import com.iemr.flw.service.DeathReportsService; import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Service @@ -43,16 +47,20 @@ public class DeathReportsServiceImpl implements DeathReportsService { @Autowired private IncentiveRecordRepo recordRepo; + @Autowired + private UpdateIncentivePendindDocService pendindDocService; + + private final Logger logger = LoggerFactory.getLogger(DeathReportsServiceImpl.class); @Override public String registerCDR(List cdrDTOs) { try { List cdrList = new ArrayList<>(); - cdrDTOs.forEach(it ->{ + cdrDTOs.forEach(it -> { CDR existingCDR = cdrRepo.findCDRByBenId(it.getBenId()); - if(existingCDR != null) { + if (existingCDR != null) { Long id = existingCDR.getId(); modelMapper.map(it, existingCDR); existingCDR.setId(id); @@ -73,15 +81,47 @@ public String registerCDR(List cdrDTOs) { } } + public String updateCDRUploadFiles(CdrDTO cdrDTOs, Long incentiveActivityId) { + try { + Optional cdrOptional = cdrRepo.findById(cdrDTOs.getId()); + CDR cdr = new CDR(); + if (cdrOptional.isPresent()) { + cdr = cdrOptional.get(); + if (cdrDTOs.getCdrImage() != null && !cdrDTOs.getCdrImage().isEmpty()) { + cdr.setCdrImage(cdrDTOs.getCdrImage()); + } + + if (cdrDTOs.getCdrImage2() != null && !cdrDTOs.getCdrImage2().isEmpty()) { + cdr.setCdrImage2(cdrDTOs.getCdrImage2()); + } + + if (cdrDTOs.getDeathCertImage1() != null && !cdrDTOs.getDeathCertImage1().isEmpty()) { + cdr.setDeathCertImage1(cdrDTOs.getDeathCertImage1()); + } + + if (cdrDTOs.getDeathCertImage2() != null && !cdrDTOs.getDeathCertImage2().isEmpty()) { + cdr.setDeathCertImage2(cdrDTOs.getDeathCertImage2()); + } + } + cdrRepo.save(cdr); + + pendindDocService.updateIncentive(incentiveActivityId); + + return "no of cdr details update: "; + } catch (Exception e) { + return "error while saving cdr details: " + e.getMessage(); + } + } + @Override public String registerMDSR(List mdsrDTOs) { try { List mdsrList = new ArrayList<>(); - mdsrDTOs.forEach(it ->{ + mdsrDTOs.forEach(it -> { MDSR mdsr = mdsrRepo.findMDSRByBenId(it.getBenId()); - if(mdsr != null) { + if (mdsr != null) { Long id = mdsr.getId(); modelMapper.map(it, mdsr); mdsr.setId(id); @@ -101,16 +141,56 @@ public String registerMDSR(List mdsrDTOs) { } } + public String updateMDSR(MdsrDTO mdsrDTO, Long incentiveActivityId) { + try { + + Optional mdsrOptional = mdsrRepo.findById(mdsrDTO.getId()); + MDSR mdsr = new MDSR(); + + if (mdsrOptional.isPresent()) { + + mdsr = mdsrOptional.get(); + + if (mdsrDTO.getMdsr1File() != null && !mdsrDTO.getMdsr1File().isEmpty()) { + mdsr.setMdsr1File(mdsrDTO.getMdsr1File()); + } + + if (mdsrDTO.getMdsr2File() != null && !mdsrDTO.getMdsr2File().isEmpty()) { + mdsr.setMdsr2File(mdsrDTO.getMdsr2File()); + } + + if (mdsrDTO.getMdsrDeathCertFile() != null && !mdsrDTO.getMdsrDeathCertFile().isEmpty()) { + mdsr.setMdsrDeathCertFile(mdsrDTO.getMdsrDeathCertFile()); + } + + } else { + return "MDSR record not found with id: " + mdsrDTO.getId(); + } + + mdsrRepo.save(mdsr); + + // incentive update + pendindDocService.updateIncentive(incentiveActivityId); + + return "MDSR updated successfully for id: " + mdsrDTO.getId(); + + } catch (Exception e) { + return "error while updating mdsr details: " + e.getMessage(); + } + } + @Override public List getCdrRecords(GetBenRequestHandler dto) { - try{ - String user = beneficiaryRepo.getUserName(dto.getAshaId()); + try { + String user = userRepo.getUserNamedByUserId(dto.getAshaId()); List cdrlist = - cdrRepo.getAllCdrByBenId(user, dto.getFromDate(), dto.getToDate()); + cdrRepo.findByCreatedBy(user); return cdrlist.stream() .map(cdr -> mapper.convertValue(cdr, CdrDTO.class)) .collect(Collectors.toList()); } catch (Exception e) { + logger.error("MDSR Exception:" + e.getMessage()); + // log } return null; @@ -120,14 +200,16 @@ public List getCdrRecords(GetBenRequestHandler dto) { public List getMdsrRecords(GetBenRequestHandler dto) { try { - String user = beneficiaryRepo.getUserName(dto.getAshaId()); + String user = userRepo.getUserNamedByUserId(dto.getAshaId()); List mdsrList = - mdsrRepo.getAllMdsrByAshaId(user, dto.getFromDate(), dto.getToDate()); + mdsrRepo.findByCreatedBy(user); return mdsrList.stream() .map(mdsr -> mapper.convertValue(mdsr, MdsrDTO.class)) .collect(Collectors.toList()); } catch (Exception e) { + logger.error("MDSR Exception:" + e.getMessage()); + // log } return null; @@ -135,11 +217,11 @@ public List getMdsrRecords(GetBenRequestHandler dto) { private void checkAndAddIncentives(List cdrList) { - cdrList.forEach( cdr -> { + cdrList.forEach(cdr -> { Integer userId = userRepo.getUserIdByName(cdr.getCreatedBy()); IncentiveActivity immunizationActivity = incentivesRepo.findIncentiveMasterByNameAndGroup("CHILD_DEATH_REPORTING", GroupName.CHILD_HEALTH.getDisplayName()); - createIncentiveRecord(cdr,cdr.getBenId(),userId,immunizationActivity); + createIncentiveRecord(cdr, cdr.getBenId(), userId, immunizationActivity); }); } @@ -147,17 +229,16 @@ private void checkAndAddIncentives(List cdrList) { private void checkAndAddIncentivesMdsr(List mdsrList) { - mdsrList.forEach( mdsr -> { + mdsrList.forEach(mdsr -> { Integer userId = userRepo.getUserIdByName(mdsr.getCreatedBy()); IncentiveActivity immunizationActivity = incentivesRepo.findIncentiveMasterByNameAndGroup("MATERNAL_DEATH_REPORT", GroupName.MATERNAL_HEALTH.getDisplayName()); - createIncentiveRecord(mdsr,mdsr.getBenId(),userId,immunizationActivity); + createIncentiveRecord(mdsr, mdsr.getBenId(), userId, immunizationActivity); }); } - private void createIncentiveRecord(CDR cdr, Long benId, Integer userId, IncentiveActivity immunizationActivity) { IncentiveActivityRecord record = recordRepo .findRecordByActivityIdCreatedDateBenId(immunizationActivity.getId(), cdr.getCreatedDate(), benId); @@ -173,7 +254,26 @@ record = new IncentiveActivityRecord(); record.setBenId(benId); record.setAshaId(userId); record.setAmount(Long.valueOf(immunizationActivity.getRate())); - recordRepo.save(record); + if (userRepo.getUserRole(userId).get(0).getStateId() == StateCode.AM.getStateCode()) { + if (cdr.getDeathCertImage1() != null && cdr.getCdrImage() != null && cdr.getCdrImage2() != null && cdr.getDeathCertImage2() != null) { + record.setIsEligible(true); + recordRepo.save(record); + + } else { + record.setIsEligible(false); + IncentiveActivityRecord incentiveActivityRecord = recordRepo.save(record); + if (incentiveActivityRecord == null) { + recordRepo.save(record); + pendindDocService.updatePendingActivity(userId, cdr.getId(), record.getId(), immunizationActivity.getId()); + + } + + } + } else { + recordRepo.save(record); + + } + } } @@ -192,14 +292,29 @@ record = new IncentiveActivityRecord(); record.setBenId(benId); record.setAshaId(userId); record.setAmount(Long.valueOf(immunizationActivity.getRate())); - recordRepo.save(record); - } - } + if (userRepo.getUserRole(userId).get(0).getStateId() == StateCode.AM.getStateCode()) { + if (mdsr.getMdsrDeathCertFile() != null && mdsr.getMdsr1File() != null && mdsr.getMdsr2File() != null) { + record.setIsEligible(true); + recordRepo.save(record); + + } else { + record.setIsEligible(false); + IncentiveActivityRecord incentiveActivityRecord = recordRepo.save(record); + if (incentiveActivityRecord == null) { + recordRepo.save(record); + pendindDocService.updatePendingActivity(userId, mdsr.getId(), record.getId(), immunizationActivity.getId()); + } + } + } else { + recordRepo.save(record); + } + } + } } diff --git a/src/main/java/com/iemr/flw/service/impl/DeliveryOutcomeServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/DeliveryOutcomeServiceImpl.java index 0e329f4b..3ccd9973 100644 --- a/src/main/java/com/iemr/flw/service/impl/DeliveryOutcomeServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/DeliveryOutcomeServiceImpl.java @@ -108,13 +108,14 @@ public String registerDeliveryOutcome(List deliveryOutcomeDT @Override public List getDeliveryOutcome(GetBenRequestHandler dto) { try { - String user = beneficiaryRepo.getUserName(dto.getAshaId()); - List deliveryOutcomeList = deliveryOutcomeRepo.getDeliveryOutcomeByAshaId(user, dto.getFromDate(), dto.getToDate()); + String user = userRepo.getUserNamedByUserId(dto.getAshaId()); + List deliveryOutcomeList = deliveryOutcomeRepo.getDeliveryOutcomeByAshaId(user,dto.getFromDate(),dto.getToDate()); + logger.info("DeliveryOutcome Response{}",deliveryOutcomeList); return deliveryOutcomeList.stream() .map(deliveryOutcome -> mapper.convertValue(deliveryOutcome, DeliveryOutcomeDTO.class)) .collect(Collectors.toList()); } catch (Exception e) { - logger.error(e.getMessage()); + logger.error("DeliveryOutcome Exception:"+e.getMessage()); } return null; } diff --git a/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java index d5f009ea..3a2e9e5b 100644 --- a/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java @@ -32,8 +32,10 @@ import com.iemr.flw.masterEnum.DiseaseType; import com.iemr.flw.repo.iemr.*; import com.iemr.flw.service.DiseaseControlService; +import com.iemr.flw.service.IncentiveLogicService; import com.iemr.flw.utils.JwtUtil; import com.iemr.flw.utils.exception.IEMRException; +import jakarta.transaction.Transactional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -45,6 +47,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; + import org.modelmapper.ModelMapper; @Service @@ -86,8 +89,11 @@ public class DiseaseControlServiceImpl implements DiseaseControlService { @Autowired private JwtUtil jwtUtil; + @Autowired + private IncentiveLogicService incentiveLogicService; + - private final Logger logger = LoggerFactory.getLogger(CoupleController.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); @Override public String saveMalaria(MalariaDTO diseaseControlDTO) { @@ -109,7 +115,7 @@ public String saveMalaria(MalariaDTO diseaseControlDTO) { @Override public String saveKalaAzar(KalaAzarDTO diseaseControlDTO) { - logger.info("Save request: "+diseaseControlDTO.toString()); + logger.info("Save request: " + diseaseControlDTO.toString()); for (DiseaseKalaAzarDTO diseaseControlData : diseaseControlDTO.getKalaAzarLists()) { if (diseaseKalaAzarRepository.findByBenId(diseaseControlData.getBenId()).isPresent()) { return updateKalaAzarDisease(diseaseControlData); @@ -275,6 +281,7 @@ private String updateFilaria(DiseaseFilariasisDTO diseaseControlData) { @Override + @Transactional public String saveLeprosy(LeprosyDTO diseaseControlDTO) { for (DiseaseLeprosyDTO diseaseControlData : diseaseControlDTO.getLeprosyLists()) { if (diseaseLeprosyRepository.findByBenId(diseaseControlData.getBenId()).isPresent()) { @@ -283,7 +290,61 @@ public String saveLeprosy(LeprosyDTO diseaseControlDTO) { if (diseaseControlDTO.getUserId() != null) { diseaseControlData.setUserId(diseaseControlDTO.getUserId()); } - diseaseLeprosyRepository.save(saveLeprosyData(diseaseControlData)); + ScreeningLeprosy screeningLeprosy = diseaseLeprosyRepository.save(saveLeprosyData(diseaseControlData)); + if (screeningLeprosy != null) { + if (screeningLeprosy.getIsConfirmed()) { + if (screeningLeprosy.getTypeOfLeprosy().equals("PB (Paucibacillary)")) { + IncentiveActivityRecord incentiveActivityRecord = + incentiveLogicService.incentiveForLeprosyPaucibacillaryConfirmed( + screeningLeprosy.getBenId(), + screeningLeprosy.getTreatmentStartDate(), + screeningLeprosy.getTreatmentEndDate(), + diseaseControlDTO.getUserId()); + + if (incentiveActivityRecord != null) { + logger.info("Incentive processed for Screening Leprosy successfully. RecordId={}", + incentiveActivityRecord.getId()); + } else { + logger.info("Incentive not created"); + } + + } + if (screeningLeprosy.getTypeOfLeprosy().equals("MB (Multibacillary)")) { + IncentiveActivityRecord incentiveActivityRecord = + incentiveLogicService.incentiveForLeprosyMultibacillaryConfirmed( + screeningLeprosy.getBenId(), + screeningLeprosy.getTreatmentStartDate(), + screeningLeprosy.getTreatmentEndDate(), + diseaseControlDTO.getUserId()); + + if (incentiveActivityRecord != null) { + logger.info("Incentive processed for Screening Leprosy successfully. RecordId={}", + incentiveActivityRecord.getId()); + } else { + logger.info("Incentive not created"); + } + + } + + if (screeningLeprosy.getIsConfirmed()) { + IncentiveActivityRecord incentiveActivityRecord = + incentiveLogicService.incentiveForIdentificationLeprosy( + screeningLeprosy.getBenId(), + screeningLeprosy.getTreatmentStartDate(), + screeningLeprosy.getTreatmentEndDate(), + diseaseControlDTO.getUserId()); + + if (incentiveActivityRecord != null) { + logger.info("Incentive processed for Screening Leprosy successfully. RecordId={}", + incentiveActivityRecord.getId()); + } else { + logger.info("Incentive not created"); + } + + } + } + } + return "Data add successfully"; } @@ -356,10 +417,10 @@ private String updateLeprosyFollowUpData(LeprosyFollowUpDTO data, LeprosyFollowU public String saveLeprosyFollowUp(LeprosyFollowUpDTO dto) { if (dto == null) return "Invalid data"; - LeprosyFollowUp entity = saveLeprosyFollowUpData(dto); - leprosyFollowUpRepository.save(entity); - return "Follow-up data added successfully"; - + LeprosyFollowUp entity = saveLeprosyFollowUpData(dto); + leprosyFollowUpRepository.save(entity); + return "Follow-up data added successfully"; + } @Override @@ -402,7 +463,7 @@ public Object getAllMalaria(GetDiseaseRequestHandler getDiseaseRequestHandler) { // Check if the list is empty if (filteredList.isEmpty()) { - return Collections.singletonMap("message", "No data found for Malaria."); + return filteredList; } // Map to DTOs @@ -490,7 +551,7 @@ public Object getAllKalaAzar(GetDiseaseRequestHandler getDiseaseRequestHandler) // Check if the list is empty if (filteredList.isEmpty()) { - return Collections.singletonMap("message", "No data found for Kala Azar."); + return filteredList; } // Map to DTOs @@ -529,7 +590,7 @@ public Object getAllKalaAzar(GetDiseaseRequestHandler getDiseaseRequestHandler) public Object getAllKalaAES(GetDiseaseRequestHandler getDiseaseRequestHandler) { if (diseaseAESJERepository.findAll().isEmpty()) { - return Collections.singletonMap("message", "No data found for AES."); + return diseaseAESJERepository.findAll(); } return diseaseAESJERepository.findAll().stream().filter(diseaseAesje -> Objects.equals(diseaseAesje.getUserId(), getDiseaseRequestHandler.getUserId())).collect(Collectors.toList()); @@ -580,7 +641,7 @@ public Object getAllLeprosy(GetDiseaseRequestHandler getDiseaseRequestHandler) { // Check if the list is empty if (filteredList.isEmpty()) { - return Collections.singletonMap("message", "No data found for Leprosy."); + return filteredList; } // Map to DTOs @@ -609,7 +670,7 @@ public Object getAllLeprosy(GetDiseaseRequestHandler getDiseaseRequestHandler) { private ScreeningKalaAzar saveKalaAzarDisease(DiseaseKalaAzarDTO dto) { - logger.info("KalaAzarRequest: "+dto); + logger.info("KalaAzarRequest: " + dto); ScreeningKalaAzar entity = new ScreeningKalaAzar(); entity.setBenId(dto.getBenId()); @@ -948,12 +1009,10 @@ public List saveMosquitoMobilizationNet(List mos }).collect(Collectors.toList()); - // ✅ Save all List savedEntities = mosquitoNetRepository.saveAll(entityList); - // ✅ Entity → DTO return return savedEntities.stream().map(entity -> { @@ -1001,15 +1060,13 @@ public List getAllMosquitoMobilizationNet(Integer userId) { mosquitoNetListDTO.setIs_net_distributed(entity.getIsNetDistributed()); mosquitoNetListDTO.setVisit_date(entity.getVisitDate().format(formatter)); - dto.setFields(mosquitoNetListDTO); + dto.setFields(mosquitoNetListDTO); return dto; }).collect(Collectors.toList()); } - - private void checkAndAddIncentives(ScreeningMalaria diseaseScreening) { IncentiveActivity diseaseScreeningActivity; if (Objects.equals(diseaseScreening.getCaseStatus(), "Confirmed Case")) { @@ -1060,10 +1117,9 @@ record = new IncentiveActivityRecord(); } - @Override public List saveChronicDiseaseVisit( - List requestList,String token) throws IEMRException { + List requestList, String token) throws IEMRException { List responseList = new ArrayList<>(); diff --git a/src/main/java/com/iemr/flw/service/impl/EmployeeMasterImpl.java b/src/main/java/com/iemr/flw/service/impl/EmployeeMasterImpl.java index 2f67fc2b..acf7836c 100644 --- a/src/main/java/com/iemr/flw/service/impl/EmployeeMasterImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/EmployeeMasterImpl.java @@ -1,6 +1,6 @@ package com.iemr.flw.service.impl; -import com.iemr.flw.domain.iemr.M_User; +import com.iemr.flw.domain.iemr.User; import com.iemr.flw.repo.iemr.EmployeeMasterRepo; import com.iemr.flw.service.EmployeeMasterInter; @@ -19,13 +19,13 @@ public class EmployeeMasterImpl implements EmployeeMasterInter { @Override - public M_User getUserDetails(Integer userID) { + public User getUserDetails(Integer userID) { logger.debug("Fetching user details for userID: {}", userID); try { if (userID == null) { throw new IllegalArgumentException("UserID cannot be null"); } - return employeeMasterRepo.findByUserID(userID); + return employeeMasterRepo.findUserByUserID(userID); } catch (Exception e) { logger.error("Error fetching user details for userID: {}", userID, e); throw e; @@ -33,7 +33,7 @@ public M_User getUserDetails(Integer userID) { } @Override - public List getAllUsers() { + public List getAllUsers() { return employeeMasterRepo.findAll(); } } diff --git a/src/main/java/com/iemr/flw/service/impl/HRPregnantServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/HRPregnantServiceImpl.java index c7794d0e..3fd8db23 100644 --- a/src/main/java/com/iemr/flw/service/impl/HRPregnantServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/HRPregnantServiceImpl.java @@ -28,9 +28,14 @@ public class HRPregnantServiceImpl implements HighRiskPregnantService { private HRPregnantAssessRepo assessRepo; @Autowired private HRPregnantTrackRepo trackRepo; + + @Autowired + private IncentiveLogicImpl incentiveLogic; private final ModelMapper modelMapper = new ModelMapper(); + + @Override public String getAllAssessments(GetBenRequestHandler request) { List dtos = new ArrayList<>(); @@ -65,6 +70,14 @@ public String saveAllAssessment(UserDataDTO requestDTO) { assess.setUserId(requestDTO.getUserId()); assessRepo.save(assess); + if(assess!=null){ + if(assess.getIsHighRisk()!=null && assess.getIsHighRisk()){ + incentiveLogic.incentiveForIdentifiedPNC(assess.getBenId(),assess.getVisitDate(),assess.getVisitDate(),assess.getUserId()); + + } + + } + }); return "no of high risk assessment items saved: " + requestDTO.getEntries().size(); } diff --git a/src/main/java/com/iemr/flw/service/impl/IncentiveLogicImpl.java b/src/main/java/com/iemr/flw/service/impl/IncentiveLogicImpl.java new file mode 100644 index 00000000..52dc5c09 --- /dev/null +++ b/src/main/java/com/iemr/flw/service/impl/IncentiveLogicImpl.java @@ -0,0 +1,390 @@ +package com.iemr.flw.service.impl; + +import com.iemr.flw.domain.iemr.IncentiveActivity; +import com.iemr.flw.domain.iemr.IncentiveActivityRecord; +import com.iemr.flw.masterEnum.GroupName; +import com.iemr.flw.masterEnum.IncentiveName; +import com.iemr.flw.masterEnum.StateCode; +import com.iemr.flw.repo.iemr.IncentiveRecordRepo; +import com.iemr.flw.repo.iemr.IncentivesRepo; +import com.iemr.flw.repo.iemr.UserServiceRoleRepo; +import com.iemr.flw.service.IncentiveLogicService; +import com.iemr.flw.service.UserService; +import com.iemr.flw.utils.JwtUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.Date; + +@Service +public class IncentiveLogicImpl implements IncentiveLogicService { + + private static final Logger logger = LoggerFactory.getLogger(IncentiveLogicImpl.class); + + @Autowired + private IncentivesRepo incentivesRepo; + + @Autowired + private IncentiveRecordRepo incentiveRecordRepo; + + @Autowired + private JwtUtil jwtUtil; + + @Autowired + private UserService userService; + + @Autowired + private UserServiceRoleRepo userServiceRoleRepo; + + @Override + public IncentiveActivityRecord incentiveForLeprosyPaucibacillaryConfirmed( + Long benId, + Date treatmentStartDate, + Date treatmentEndDate, + Integer userId) { + + try { + Integer stateCode = userService.getUserDetail(userId).getStateId(); + + if (stateCode == null) { + logger.warn("State code is null for user: {}", userId); + return null; + } + + String activityName = "NLEP_PB_TREATMENT"; + + if (stateCode.equals(StateCode.AM.getStateCode())) { + return processIncentive( + activityName, + GroupName.UMBRELLA_PROGRAMMES.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + if (stateCode.equals(StateCode.CG.getStateCode())) { + return processIncentive( + activityName, + GroupName.ACTIVITY.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + // state not supported + logger.info("No incentive mapping for stateCode: {}", stateCode); + return null; + + } catch (Exception e) { + logger.error("Check NLEP_PB_TREATMENT Incentive Exception: ", e); + return null; + } + } + + @Override + public IncentiveActivityRecord incentiveForLeprosyMultibacillaryConfirmed( + Long benId, + Date treatmentStartDate, + Date treatmentEndDate, + Integer userId) { + + try { + Integer stateCode = userService.getUserDetail(userId).getStateId(); + + if (stateCode == null) { + logger.warn("State code is null for user: {}", userId); + return null; + } + + String activityName = "NLEP_PB_TREATMENT"; + + if (stateCode.equals(StateCode.AM.getStateCode())) { + return processIncentive( + activityName, + GroupName.UMBRELLA_PROGRAMMES.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + if (stateCode.equals(StateCode.CG.getStateCode())) { + return processIncentive( + activityName, + GroupName.ACTIVITY.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + // state not supported + logger.info("No incentive mapping for stateCode: {}", stateCode); + return null; + + } catch (Exception e) { + logger.error("Check NLEP_PB_TREATMENT Incentive Exception: ", e); + return null; + } + } + + @Override + public IncentiveActivityRecord incentiveForVhndMeeting(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId) { + try { + Integer stateCode = userService.getUserDetail(userId).getStateId(); + + if (stateCode == null) { + logger.warn("State code is null for user: {}", userId); + return null; + } + + String activityName = "VHND_PARTICIPATION"; + + if (stateCode.equals(StateCode.CG.getStateCode())) { + return processIncentive( + activityName, + GroupName.ACTIVITY.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + // state not supported + logger.info("No incentive mapping for stateCode: {}", stateCode); + return null; + + } catch (Exception e) { + logger.error("Check VHND_PARTICIPATION Incentive Exception: ", e); + return null; + } + } + + @Override + public IncentiveActivityRecord incentiveForClusterMeeting(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId) { + try { + Integer stateCode = userService.getUserDetail(userId).getStateId(); + + if (stateCode == null) { + logger.warn("State code is null for user: {}", userId); + return null; + } + + String activityName = "CLUSTER_MEETING"; + + if (stateCode.equals(StateCode.CG.getStateCode())) { + return processIncentive( + activityName, + GroupName.ACTIVITY.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + // state not supported + logger.info("No incentive mapping for stateCode: {}", stateCode); + return null; + + } catch (Exception e) { + logger.error("Check CLUSTER_MEETING Incentive Exception: ", e); + return null; + } + } + + @Override + public IncentiveActivityRecord incentiveForAttendingVhsnc(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId) { + try { + Integer stateCode = userService.getUserDetail(userId).getStateId(); + + if (stateCode == null) { + logger.warn("State code is null for user: {}", userId); + return null; + } + + String activityName = "VHSNC_MEETING"; + + if (stateCode.equals(StateCode.CG.getStateCode())) { + return processIncentive( + activityName, + GroupName.ACTIVITY.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + // state not supported + logger.info("No incentive mapping for stateCode: {}", stateCode); + return null; + + } catch (Exception e) { + logger.error("Check VHSNC_MEETING Incentive Exception: ", e); + return null; + } + } + + @Override + public IncentiveActivityRecord incentiveForIdentifiedPNC(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId) { + try { + Integer stateCode = userService.getUserDetail(userId).getStateId(); + + if (stateCode == null) { + logger.warn("State code is null for user: {}", userId); + return null; + } + + String activityNameAM = IncentiveName.MH_HR_POSTNATAL.name(); + String activityNameCG = IncentiveName.HIGH_RISK_POSTPARTUM_HEALTH_CHECK.name(); + + if (stateCode.equals(StateCode.AM.getStateCode())) { + return processIncentive( + activityNameAM, + GroupName.MATERNAL_HEALTH.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + if (stateCode.equals(StateCode.CG.getStateCode())) { + return processIncentive( + activityNameCG, + GroupName.ACTIVITY.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + logger.info("No incentive mapping for stateCode: {}", stateCode); + return null; + + } catch (Exception e) { + logger.error("Check VHSNC_MEETING Incentive Exception: ", e); + return null; + } + } + + @Override + public IncentiveActivityRecord incentiveForIdentificationLeprosy(Long benId, Date treatmentStartDate, Date treatmentEndDate, Integer userId) { + try { + Integer stateCode = userService.getUserDetail(userId).getStateId(); + + if (stateCode == null) { + logger.warn("State code is null for user: {}", userId); + return null; + } + + String activityName = "NLEP_CASE_DETECTION"; + + if (stateCode.equals(StateCode.AM.getStateCode())) { + return processIncentive( + activityName, + GroupName.UMBRELLA_PROGRAMMES.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + if (stateCode.equals(StateCode.CG.getStateCode())) { + return processIncentive( + activityName, + GroupName.ACTIVITY.getDisplayName(), + benId, + treatmentStartDate, + treatmentEndDate, + userId); + } + + // state not supported + logger.info("No incentive mapping for stateCode: {}", stateCode); + return null; + + } catch (Exception e) { + logger.error("Check Leprosy Incentive Exception: ", e); + return null; + } + } + + private IncentiveActivityRecord processIncentive(String activityName, String groupName, Long benId, + Date startDate, Date endDate, Integer userId) { + try { + IncentiveActivity activity = incentivesRepo.findIncentiveMasterByNameAndGroup(activityName, groupName); + + if (activity == null) { + logger.info("No IncentiveActivity found for name: {} and group: {}", activityName, groupName); + return null ; + } + + return saveIncentive(activity, benId, startDate, endDate, userId); + + } catch (Exception e) { + logger.error("Process Incentive Exception: ", e); + return null; + + } + } + + private IncentiveActivityRecord saveIncentive( + IncentiveActivity activity, + Long benId, + Date startDate, + Date endDate, + Integer userId) { + + try { + + if (activity == null || benId == null || startDate == null || endDate == null) { + logger.warn("Invalid input for saving incentive"); + return null; + } + + Timestamp startTimestamp = new Timestamp(startDate.getTime()); + Timestamp endTimestamp = new Timestamp(endDate.getTime()); + + + // 🔍 duplicate check + IncentiveActivityRecord existing = incentiveRecordRepo + .findRecordByActivityIdCreatedDateBenId( + activity.getId(), startTimestamp, benId); + + if (existing != null) { + logger.info("Incentive already exists for benId: {}, activityId: {}", + benId, activity.getId()); + return existing; + } + + // 🆕 create record + IncentiveActivityRecord record = new IncentiveActivityRecord(); + record.setActivityId(activity.getId()); + record.setCreatedDate(startTimestamp); + record.setUpdatedDate(startTimestamp); + record.setStartDate(startTimestamp); + record.setEndDate(endTimestamp); + record.setCreatedBy(userServiceRoleRepo.getUserNamedByUserId(userId)); + record.setUpdatedBy(userServiceRoleRepo.getUserNamedByUserId(userId)); + record.setBenId(benId); + record.setAshaId(userId); + record.setName(activity.getName()); + record.setAmount(Long.valueOf(activity.getRate())); + + record = incentiveRecordRepo.save(record); + + logger.info("Incentive saved successfully for benId: {}", benId); + + return record; + + } catch (Exception e) { + logger.error("Error Incentive Exception: ", e); + return null; + } + } + +} diff --git a/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java index 5580e896..bbf28e4d 100644 --- a/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java @@ -1,20 +1,20 @@ package com.iemr.flw.service.impl; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.iemr.flw.domain.identity.RMNCHMBeneficiarydetail; -import com.iemr.flw.domain.iemr.IncentiveActivity; -import com.iemr.flw.domain.iemr.IncentiveActivityLangMapping; -import com.iemr.flw.domain.iemr.IncentiveActivityRecord; -import com.iemr.flw.domain.iemr.IncentivePendingActivity; +import com.iemr.flw.domain.iemr.*; import com.iemr.flw.dto.identity.GetBenRequestHandler; import com.iemr.flw.dto.iemr.*; import com.iemr.flw.masterEnum.GroupName; +import com.iemr.flw.masterEnum.IncentiveName; import com.iemr.flw.masterEnum.StateCode; import com.iemr.flw.repo.identity.BeneficiaryRepo; import com.iemr.flw.repo.iemr.*; import com.iemr.flw.service.IncentiveService; import com.iemr.flw.service.MaaMeetingService; +import com.iemr.flw.service.UwinSessionService; import com.iemr.flw.utils.JwtUtil; import org.modelmapper.ModelMapper; import org.slf4j.Logger; @@ -23,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.math.BigInteger; import java.sql.Timestamp; import java.time.LocalDate; @@ -59,6 +60,15 @@ public class IncentiveServiceImpl implements IncentiveService { @Autowired private MaaMeetingService maaMeetingService; + @Autowired + private ChildCareServiceImpl childCareService; + + @Autowired + private UwinSessionService uwinSessionService; + + @Autowired + private DeathReportsServiceImpl deathReportsService; + @Override public String saveIncentivesMaster(List activityDTOS) { try { @@ -78,7 +88,7 @@ public String saveIncentivesMaster(List activityDTOS) { }); String saved = ""; activityDTOS.forEach(dto -> saved.concat(dto.getGroup() + ": " + dto.getName())); - return "saved master data for " + saved ; + return "saved master data for " + saved; } catch (Exception e) { } @@ -90,10 +100,10 @@ public String getIncentiveMaster(IncentiveRequestDTO incentiveRequestDTO) { try { List incs = new ArrayList<>(); - if(incentiveRequestDTO.getState()==StateCode.CG.getStateCode()){ + if (incentiveRequestDTO.getState() == StateCode.CG.getStateCode()) { incs = incentivesRepo.findAll().stream().filter(incentiveActivity -> incentiveActivity.getGroup().equals("ACTIVITY")).collect(Collectors.toList()); - }else { + } else { incs = incentivesRepo.findAll().stream().filter(incentiveActivity -> !incentiveActivity.getGroup().equals("ACTIVITY")).collect(Collectors.toList()); } @@ -102,40 +112,38 @@ public String getIncentiveMaster(IncentiveRequestDTO incentiveRequestDTO) { // Fetch language mapping IncentiveActivityLangMapping mapping = incentiveActivityLangMappingRepo - .findByIdAndName(inc.getId(),inc.getName()); - + .findByIdAndName(inc.getId(), inc.getName()); if (mapping != null) { dto.setName(mapping.getName()); dto.setGroupName(mapping.getGroup()); - if(Objects.equals(incentiveRequestDTO.getLangCode(), "en")){ + if (Objects.equals(incentiveRequestDTO.getLangCode(), "en")) { dto.setDescription(inc.getDescription()); + } else if (Objects.equals(incentiveRequestDTO.getLangCode(), "as")) { - }else if(Objects.equals(incentiveRequestDTO.getLangCode(), "as")){ - - if(mapping.getAssameActivityDescription()!=null){ + if (mapping.getAssameActivityDescription() != null) { dto.setDescription(mapping.getAssameActivityDescription()); - }else { + } else { dto.setDescription(mapping.getDescription()); } - }else if(Objects.equals(incentiveRequestDTO.getLangCode(), "hi")){ - if(mapping.getHindiActivityDescription()!=null){ + } else if (Objects.equals(incentiveRequestDTO.getLangCode(), "hi")) { + if (mapping.getHindiActivityDescription() != null) { dto.setDescription(mapping.getHindiActivityDescription()); - }else { + } else { dto.setDescription(mapping.getDescription()); } } - }else { + } else { dto.setGroupName(inc.getGroup()); } @@ -156,30 +164,29 @@ public String getIncentiveMaster(IncentiveRequestDTO incentiveRequestDTO) { @Override public String getAllIncentivesByUserId(GetBenRequestHandler request) { - if(request.getVillageID()!= StateCode.CG.getStateCode()){ + if (request.getVillageID() != StateCode.CG.getStateCode()) { checkMonthlyAshaIncentive(request.getAshaId()); } List dtos = new ArrayList<>(); List entities = recordRepo.findRecordsByAsha(request.getAshaId()); - if(request.getVillageID()==StateCode.CG.getStateCode()){ - entities = entities.stream().filter(entitie-> incentivesRepo.findIncentiveMasterById(entitie.getActivityId(),true)!=null).collect(Collectors.toList()); + if (request.getVillageID() == StateCode.CG.getStateCode()) { + entities = entities.stream().filter(entitie -> incentivesRepo.findIncentiveMasterById(entitie.getActivityId(), true) != null).collect(Collectors.toList()); - }else { - entities = entities.stream().filter(entitie-> incentivesRepo.findIncentiveMasterById(entitie.getActivityId(),false)!=null).collect(Collectors.toList()); + } else { + entities = entities.stream().filter(entitie -> incentivesRepo.findIncentiveMasterById(entitie.getActivityId(), false) != null).collect(Collectors.toList()); } entities.forEach(entry -> { - if(entry.getName()==null){ - if(entry.getBenId()!=0 && entry.getBenId()>0L){ + if (entry.getName() == null) { + if (entry.getBenId() != 0 && entry.getBenId() > 0L) { Long regId = beneficiaryRepo.getBenRegIdFromBenId(entry.getBenId()); - logger.info("rmnchBeneficiaryDetailsRmnch"+regId); BigInteger benDetailId = beneficiaryRepo.findByBenRegIdFromMapping(BigInteger.valueOf(regId)).getBenDetailsId(); RMNCHMBeneficiarydetail rmnchBeneficiaryDetails = beneficiaryRepo.findByBeneficiaryDetailsId(benDetailId); - String beneName = rmnchBeneficiaryDetails.getFirstName()+" "+rmnchBeneficiaryDetails.getLastName(); + String beneName = rmnchBeneficiaryDetails.getFirstName() + " " + rmnchBeneficiaryDetails.getLastName(); entry.setName(beneName); - }else{ + } else { entry.setName(""); } @@ -196,47 +203,217 @@ public String getAllIncentivesByUserId(GetBenRequestHandler request) { @Override public String updateIncentive(PendingActivityDTO pendingActivityDTO) { - Optional incentivePendingActivity = incentivePendingActivityRepository.findByUserIdAndModuleNameAndActivityId(pendingActivityDTO.getUserId(),pendingActivityDTO.getModuleName(),pendingActivityDTO.getId()); - - if(incentivePendingActivity.isPresent()){ - IncentivePendingActivity existingIncentivePendingActivity = incentivePendingActivity.get(); - if(existingIncentivePendingActivity.getModuleName().equals("MAA_MEETING")){ - if(pendingActivityDTO.getImages()!=null){ - try { - MaaMeetingRequestDTO maaMeetingRequestDTO = new MaaMeetingRequestDTO(); - maaMeetingRequestDTO.setMeetingImages(pendingActivityDTO.getImages().toArray(new MultipartFile[0])); - maaMeetingService.updateMeeting(maaMeetingRequestDTO); - - }catch (Exception e){ - return e.getMessage(); + logger.info("run--1"); + + if (pendingActivityDTO == null) { + return "Invalid request"; + } + logger.info("run--2"); + + IncentiveName incentiveName; + try { + incentiveName = IncentiveName.valueOf(pendingActivityDTO.getActivityName()); + } catch (IllegalArgumentException e) { + return "Invalid incentive name"; + } + logger.info("run--3"); + + + IncentiveActivity incentiveActivity = + incentivesRepo.findIncentiveMasterByNameAndGroup( + pendingActivityDTO.getActivityName(), + pendingActivityDTO.getModuleName() + ); + logger.info("run--3"); + + + if (incentiveActivity == null) { + return null; + } + + Optional optionalPendingActivity = + incentivePendingActivityRepository + .findByMincentiveIdAndActivityId( + incentiveActivity.getId(), + pendingActivityDTO.getId() + ); + logger.info("run--4"); + + if (!optionalPendingActivity.isPresent()) { + return null; + } + logger.info("run--5"); + + IncentivePendingActivity existingActivity = optionalPendingActivity.get(); + + if (!existingActivity.getActivityId().equals(pendingActivityDTO.getId())) { + return null; + } + logger.info("run--6"); + + if (pendingActivityDTO.getImages() == null || pendingActivityDTO.getImages().isEmpty()) { + return null; + } + logger.info("run--7"); + + try { + + // ✅ ENUM BASED CHECK + if(pendingActivityDTO.getModuleName().equals(GroupName.ACTIVITY)){ + if (Objects.equals(incentiveName.name(), IncentiveName.MAA_QUARTERLY_MEETING.name())) { + MaaMeetingRequestDTO maaMeetingRequestDTO = new MaaMeetingRequestDTO(); + maaMeetingRequestDTO.setId(existingActivity.getRecordId()); + maaMeetingRequestDTO.setMeetingImages( + pendingActivityDTO.getImages().toArray(new MultipartFile[0]) + ); + logger.info("Activity Name from request:"+incentiveName.name()); + logger.info("Activity Name from enum:"+IncentiveName.MAA_QUARTERLY_MEETING.name()); + + + MaaMeeting meeting= maaMeetingService.updateMeetingFromFileUpload( + maaMeetingRequestDTO, + pendingActivityDTO.getId() + ); + if(meeting!=null){ + return "Incentive update successfully"; + } + } + + }else { + if (incentiveName.name().equals(IncentiveName.MAA_QUARTERLY_MEETING.name())) { + MaaMeetingRequestDTO maaMeetingRequestDTO = new MaaMeetingRequestDTO(); + maaMeetingRequestDTO.setId(existingActivity.getRecordId()); + maaMeetingRequestDTO.setMeetingImages( + pendingActivityDTO.getImages().toArray(new MultipartFile[0]) + ); + logger.info("Activity Name from request:"+incentiveName.name()); + logger.info("Activity Name from enum:"+IncentiveName.MAA_QUARTERLY_MEETING.name()); + + + MaaMeeting meeting = maaMeetingService.updateMeetingFromFileUpload( + maaMeetingRequestDTO, + pendingActivityDTO.getId() + ); + if(meeting!=null){ + return "Incentive update successfully"; + } + + } + + if (incentiveName.name().equals(IncentiveName.HBNC_0_42_DAYS.name())) { + + HbncVisit hbncVisit= childCareService.updateHbncFromFileUpload( + pendingActivityDTO.getImages().toArray(new MultipartFile[0]), + pendingActivityDTO.getId(), + existingActivity.getRecordId() + + ); + if(hbncVisit!=null){ + return "Incentive update successfully"; + } + } + if(incentiveName.name().equals(IncentiveName.CHILD_MOBILIZATION_SESSIONS.name())){ + UwinSessionRequestDTO uwinSessionRequestDTO = new UwinSessionRequestDTO(); + uwinSessionRequestDTO.setAttachments(pendingActivityDTO.getImages().toArray(new MultipartFile[0])); + UwinSession uwinSession = uwinSessionService.updateSession(uwinSessionRequestDTO,existingActivity.getRecordId(),pendingActivityDTO.getId()); + if(uwinSession!=null){ + return "Incentive update successfully"; + + } + + + } + if (pendingActivityDTO != null + && incentiveName != null + && IncentiveName.CHILD_DEATH_REPORTING.name().equals(incentiveName.name())) { + + CdrDTO cdrDTO = new CdrDTO(); + cdrDTO.setId(existingActivity.getRecordId()); + + List images = pendingActivityDTO.getImages(); + + if (images != null && !images.isEmpty()) { + + if (images.size() > 0 && images.get(0) != null && !images.get(0).isEmpty()) + cdrDTO.setCdrImage(convertAttachmentsToJson(images.get(0))); + + if (images.size() > 1 && images.get(1) != null && !images.get(1).isEmpty()) + cdrDTO.setCdrImage2(convertAttachmentsToJson(images.get(1))); + + if (images.size() > 2 && images.get(2) != null && !images.get(2).isEmpty()) + cdrDTO.setDeathCertImage1(convertAttachmentsToJson(images.get(2))); + + if (images.size() > 3 && images.get(3) != null && !images.get(3).isEmpty()) + cdrDTO.setDeathCertImage2(convertAttachmentsToJson(images.get(3))); + } + + deathReportsService.updateCDRUploadFiles(cdrDTO, pendingActivityDTO.getId()); + } + + if (pendingActivityDTO != null + && incentiveName != null + && IncentiveName.MATERNAL_DEATH_REPORT.name().equals(incentiveName.name())) { + + MdsrDTO mdsrDTO = new MdsrDTO(); + List images = pendingActivityDTO.getImages(); + mdsrDTO.setId(existingActivity.getRecordId()); + if (images != null && !images.isEmpty()) { + + if (images.size() > 0 && images.get(0) != null && !images.get(0).isEmpty()) + mdsrDTO.setMdsr1File(convertAttachmentsToJson(images.get(0))); + + if (images.size() > 1 && images.get(1) != null && !images.get(1).isEmpty()) + mdsrDTO.setMdsr2File(convertAttachmentsToJson(images.get(1))); + + if (images.size() > 2 && images.get(2) != null && !images.get(2).isEmpty()) + mdsrDTO.setMdsrDeathCertFile(convertAttachmentsToJson(images.get(2))); } + deathReportsService.updateMDSR(mdsrDTO, pendingActivityDTO.getId()); } + + } + + + + + } catch (Exception e) { + logger.info("run--last"+e.getMessage()); + + return e.getMessage(); } - return null; + return null; } - private void checkMonthlyAshaIncentive(Integer ashaId){ + public String convertAttachmentsToJson(MultipartFile file) { + try { + String base64 = Base64.getEncoder().encodeToString(file.getBytes()); + return new ObjectMapper().writeValueAsString(base64); + } catch (Exception e) { + throw new RuntimeException("Error converting file", e); + } + } + private void checkMonthlyAshaIncentive(Integer ashaId) { IncentiveActivity MOBILEBILLREIMB_ACTIVITY = incentivesRepo.findIncentiveMasterByNameAndGroup("MOBILE_BILL_REIMB", GroupName.OTHER_INCENTIVES.getDisplayName()); IncentiveActivity ADDITIONAL_ASHA_INCENTIVE = incentivesRepo.findIncentiveMasterByNameAndGroup("ADDITIONAL_ASHA_INCENTIVE", GroupName.ADDITIONAL_INCENTIVE.getDisplayName()); IncentiveActivity ASHA_MONTHLY_ROUTINE = incentivesRepo.findIncentiveMasterByNameAndGroup("ASHA_MONTHLY_ROUTINE", GroupName.ASHA_MONTHLY_ROUTINE.getDisplayName()); - if(MOBILEBILLREIMB_ACTIVITY!=null){ - addMonthlyAshaIncentiveRecord(MOBILEBILLREIMB_ACTIVITY,ashaId); + if (MOBILEBILLREIMB_ACTIVITY != null) { + addMonthlyAshaIncentiveRecord(MOBILEBILLREIMB_ACTIVITY, ashaId); } - if(ADDITIONAL_ASHA_INCENTIVE!=null){ - addMonthlyAshaIncentiveRecord(ADDITIONAL_ASHA_INCENTIVE,ashaId); + if (ADDITIONAL_ASHA_INCENTIVE != null) { + addMonthlyAshaIncentiveRecord(ADDITIONAL_ASHA_INCENTIVE, ashaId); } - if(ASHA_MONTHLY_ROUTINE!=null){ - addMonthlyAshaIncentiveRecord(ASHA_MONTHLY_ROUTINE,ashaId); + if (ASHA_MONTHLY_ROUTINE != null) { + addMonthlyAshaIncentiveRecord(ASHA_MONTHLY_ROUTINE, ashaId); } } - private void addMonthlyAshaIncentiveRecord(IncentiveActivity incentiveActivity, Integer ashaId){ + private void addMonthlyAshaIncentiveRecord(IncentiveActivity incentiveActivity, Integer ashaId) { Timestamp timestamp = Timestamp.valueOf(LocalDateTime.now()); Timestamp startOfMonth = Timestamp.valueOf(LocalDate.now().withDayOfMonth(1).atStartOfDay()); diff --git a/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java index 8914941f..08bb264a 100644 --- a/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java @@ -7,6 +7,8 @@ import com.iemr.flw.masterEnum.GroupName; import com.iemr.flw.repo.identity.BeneficiaryRepo; import com.iemr.flw.repo.iemr.*; +import com.iemr.flw.service.IncentiveLogicService; +import com.iemr.flw.service.IncentiveService; import com.iemr.flw.service.MaternalHealthService; import com.iemr.flw.utils.JwtUtil; import com.iemr.flw.utils.exception.IEMRException; @@ -21,6 +23,7 @@ import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.*; @@ -67,6 +70,9 @@ public class MaternalHealthServiceImpl implements MaternalHealthService { @Autowired private JwtUtil jwtUtil; + @Autowired + private IncentiveLogicService incentiveLogicService; + ObjectMapper mapper = new ObjectMapper(); @@ -303,7 +309,7 @@ record = new IncentiveActivityRecord(); public List getPNCVisits(GetBenRequestHandler dto) { try { String user = beneficiaryRepo.getUserName(dto.getAshaId()); - List pncVisits = pncVisitRepo.getPNCForPW(user, dto.getFromDate(), dto.getToDate()); + List pncVisits = pncVisitRepo.getPNCForPW(user); return pncVisits.stream() .map(pnc -> mapper.convertValue(pnc, PNCVisitDTO.class)) .collect(Collectors.toList()); @@ -440,6 +446,7 @@ public String saveANCVisitQuestions(List dtos, String aut } ancCounsellingCareRepo.saveAll(entities); + return "ANC Counselling & Care data saved successfully"; } diff --git a/src/main/java/com/iemr/flw/service/impl/NotificationSchedulerService.java b/src/main/java/com/iemr/flw/service/impl/NotificationSchedulerService.java index a5b6dd77..21d0da45 100644 --- a/src/main/java/com/iemr/flw/service/impl/NotificationSchedulerService.java +++ b/src/main/java/com/iemr/flw/service/impl/NotificationSchedulerService.java @@ -1,19 +1,13 @@ package com.iemr.flw.service.impl; -import com.iemr.flw.domain.iemr.M_User; +import com.iemr.flw.domain.iemr.User; import com.iemr.flw.service.EmployeeMasterInter; -import com.iemr.flw.service.impl.ChildCareServiceImpl; -import com.iemr.flw.service.impl.MaternalHealthServiceImpl; import com.iemr.flw.utils.CookieUtil; -import jakarta.annotation.PostConstruct; -import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; @Service public class NotificationSchedulerService { @@ -61,7 +55,7 @@ public void triggerAncRemindersForAllAsha() { @Scheduled(cron = "0 0 9 * * *") public void trigerTomorrowImmunizationReminders() { - for(M_User m_user: employeeMasterInter.getAllUsers()){ + for(User m_user: employeeMasterInter.getAllUsers()){ childCareService.getTomorrowImmunizationReminders(m_user.getUserID()); } diff --git a/src/main/java/com/iemr/flw/service/impl/SammelanServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/SammelanServiceImpl.java index 53497981..b9d035a7 100644 --- a/src/main/java/com/iemr/flw/service/impl/SammelanServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/SammelanServiceImpl.java @@ -51,6 +51,8 @@ public class SammelanServiceImpl implements SammelanService { @Autowired private IncentivesRepo incentivesRepo; + @Autowired + private UpdateIncentivePendindDocService updateIncentivePendindDocService; @Override @@ -62,36 +64,36 @@ public SammelanResponseDTO submitSammelan(SammelanRequestDTO sammelanRequestDTO) // Save Sammelan record record = new SammelanRecord(); record.setAshaId(sammelanRequestDTO.getAshaId()); - logger.info("Meeting Date:"+sammelanRequestDTO.getDate()); + logger.info("Meeting Date:" + sammelanRequestDTO.getDate()); Timestamp timestamp = new Timestamp(sammelanRequestDTO.getDate()); record.setMeetingDate(timestamp); record.setPlace(sammelanRequestDTO.getPlace()); record.setParticipants(sammelanRequestDTO.getParticipants()); - if (sammelanRequestDTO.getSammelanImages() != null && sammelanRequestDTO.getSammelanImages().length > 0) { - List base64Images = Arrays.stream(sammelanRequestDTO.getSammelanImages()) - .filter(file -> !file.isEmpty()) - .map(file -> { - try { - return Base64.getEncoder().encodeToString(file.getBytes()); - } catch (IOException e) { - throw new RuntimeException("Error converting image to Base64", e); - } - }) - .collect(Collectors.toList()); - - String imagesJson = objectMapper.writeValueAsString(base64Images); - record .setAttachments(imagesJson); - } + if (sammelanRequestDTO.getSammelanImages() != null && sammelanRequestDTO.getSammelanImages().length > 0) { + List base64Images = Arrays.stream(sammelanRequestDTO.getSammelanImages()) + .filter(file -> !file.isEmpty()) + .map(file -> { + try { + return Base64.getEncoder().encodeToString(file.getBytes()); + } catch (IOException e) { + throw new RuntimeException("Error converting image to Base64", e); + } + }) + .collect(Collectors.toList()); - if(record!=null){ - record = recordRepo.save(record); - checkIncentive(record); + String imagesJson = objectMapper.writeValueAsString(base64Images); + record.setAttachments(imagesJson); + } + + if (record != null) { + record = recordRepo.save(record); + checkIncentive(record); - } - // Prepare Response DTO + } + // Prepare Response DTO response.setId(record.getId()); response.setAshaId(record.getAshaId()); Timestamp ts = Timestamp.valueOf(record.getMeetingDate().toLocalDateTime()); @@ -103,7 +105,7 @@ record = recordRepo.save(record); } catch (Exception e) { - logger.info("SammelanRecord Exception: "+e.getMessage()); + logger.info("SammelanRecord Exception: " + e.getMessage()); } return response; @@ -112,14 +114,14 @@ record = recordRepo.save(record); private void checkIncentive(SammelanRecord record) { IncentiveActivity incentiveActivity = incentivesRepo.findIncentiveMasterByNameAndGroup("FP_SAAS_BAHU", GroupName.FAMILY_PLANNING.getDisplayName()); - logger.info("SammelanRecord: "+incentiveActivity.getRate()); - if(incentiveActivity!=null){ - addSammelanIncentive(incentiveActivity,record); + logger.info("SammelanRecord: " + incentiveActivity.getRate()); + if (incentiveActivity != null) { + addSammelanIncentive(incentiveActivity, record); } } private void addSammelanIncentive(IncentiveActivity incentiveActivity, SammelanRecord record) { - IncentiveActivityRecord incentiveActivityRecord = incentiveRecordRepo .findRecordByActivityIdCreatedDateBenId(incentiveActivity.getId(), record.getMeetingDate(), 0L,record.getAshaId()); + IncentiveActivityRecord incentiveActivityRecord = incentiveRecordRepo.findRecordByActivityIdCreatedDateBenId(incentiveActivity.getId(), record.getMeetingDate(), 0L, record.getAshaId()); try { if (incentiveActivityRecord == null) { incentiveActivityRecord = new IncentiveActivityRecord(); @@ -133,10 +135,21 @@ private void addSammelanIncentive(IncentiveActivity incentiveActivity, SammelanR incentiveActivityRecord.setBenId(0L); incentiveActivityRecord.setAshaId(record.getAshaId()); incentiveActivityRecord.setAmount(Long.valueOf(incentiveActivity.getRate())); - incentiveRecordRepo.save(incentiveActivityRecord); + if (record.getAttachments() != null) { + incentiveActivityRecord.setIsEligible(true); + incentiveRecordRepo.save(incentiveActivityRecord); + + } else { + incentiveActivityRecord.setIsEligible(false); + IncentiveActivityRecord activityRecord = incentiveRecordRepo.save(incentiveActivityRecord); + if (activityRecord != null) { + updateIncentivePendindDocService.updatePendingActivity(record.getAshaId(), record.getId(), activityRecord.getActivityId(), incentiveActivity.getId()); + + } + } } - }catch (Exception e){ - logger.info("SammelanRecord save Record: ",e); + } catch (Exception e) { + logger.info("SammelanRecord save Record: ", e); } diff --git a/src/main/java/com/iemr/flw/service/impl/SmsSchedulerService.java b/src/main/java/com/iemr/flw/service/impl/SmsSchedulerService.java index 637d011a..90b57fdd 100644 --- a/src/main/java/com/iemr/flw/service/impl/SmsSchedulerService.java +++ b/src/main/java/com/iemr/flw/service/impl/SmsSchedulerService.java @@ -2,22 +2,16 @@ import com.iemr.flw.domain.identity.RMNCHBeneficiaryDetailsRmnch; import com.iemr.flw.domain.iemr.ANCVisit; -import com.iemr.flw.domain.iemr.M_User; -import com.iemr.flw.dto.iemr.ANCVisitDTO; +import com.iemr.flw.domain.iemr.User; import com.iemr.flw.repo.identity.BeneficiaryRepo; import com.iemr.flw.repo.iemr.ANCVisitRepo; import com.iemr.flw.service.EmployeeMasterInter; import com.iemr.flw.utils.CookieUtil; -import jakarta.annotation.PostConstruct; -import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; import java.math.BigInteger; import java.sql.Timestamp; @@ -25,7 +19,6 @@ import java.time.ZoneId; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; @Service public class SmsSchedulerService { @@ -94,7 +87,7 @@ public void sendAncReminders() { @Scheduled(cron = "0 0 9 * * *") public void trigerTomorrowImmunizationReminders() { - for (M_User m_user : employeeMasterInter.getAllUsers()) { + for (User m_user : employeeMasterInter.getAllUsers()) { childCareService.getTomorrowImmunizationReminders(m_user.getUserID()); } diff --git a/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java index b6210169..a6c217b8 100644 --- a/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java @@ -55,16 +55,21 @@ public String save(TBScreeningRequestDTO requestDTO) throws Exception { @Override public String getByUserId(GetBenRequestHandler request) { - List dtos = new ArrayList<>(); - List tbScreeningList = tbScreeningRepo.getByUserId(request.getAshaId(), request.getFromDate(), request.getToDate()); - tbScreeningList.forEach(tbScreening -> dtos.add(modelMapper.map(tbScreening, TBScreeningDTO.class))); - TBScreeningRequestDTO tbScreeningRequestDTO = new TBScreeningRequestDTO(); - tbScreeningRequestDTO.setTbScreeningList(dtos); - tbScreeningRequestDTO.setUserId(request.getAshaId()); - Gson gson = new GsonBuilder() - .setDateFormat("MMM dd, yyyy h:mm:ss a") // Set the desired date format - .create(); - return gson.toJson(tbScreeningRequestDTO); + try { + List dtos = new ArrayList<>(); + List tbScreeningList = tbScreeningRepo.getByUserId(request.getAshaId()); + tbScreeningList.forEach(tbScreening -> dtos.add(modelMapper.map(tbScreening, TBScreeningDTO.class))); + TBScreeningRequestDTO tbScreeningRequestDTO = new TBScreeningRequestDTO(); + tbScreeningRequestDTO.setTbScreeningList(dtos); + tbScreeningRequestDTO.setUserId(request.getAshaId()); + Gson gson = new GsonBuilder() + .setDateFormat("MMM dd, yyyy h:mm:ss a") // Set the desired date format + .create(); + return gson.toJson(tbScreeningRequestDTO); + }catch (Exception e){ + logger.error("TBScreening Exception:"+e.getMessage()); + } + return null; } } diff --git a/src/main/java/com/iemr/flw/service/impl/UpdateIncentivePendindDocService.java b/src/main/java/com/iemr/flw/service/impl/UpdateIncentivePendindDocService.java new file mode 100644 index 00000000..bfda259f --- /dev/null +++ b/src/main/java/com/iemr/flw/service/impl/UpdateIncentivePendindDocService.java @@ -0,0 +1,48 @@ +package com.iemr.flw.service.impl; + +import com.iemr.flw.domain.iemr.IncentiveActivityRecord; +import com.iemr.flw.domain.iemr.IncentivePendingActivity; +import com.iemr.flw.repo.iemr.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class UpdateIncentivePendindDocService { + @Autowired + private IncentivesRepo incentivesRepo; + + @Autowired + private UserServiceRoleRepo userRepo; + + @Autowired + private IncentiveRecordRepo recordRepo; + + @Autowired + private IncentivePendingActivityRepository incentivePendingActivityRepository; + + public void updateIncentive(Long id) { + + Optional optionalRecord = recordRepo.findById(id); + + if (optionalRecord.isPresent()) { + IncentiveActivityRecord record = optionalRecord.get(); + record.setIsEligible(true); + recordRepo.save(record); + } + } + + public void updatePendingActivity(Integer userId, Long recordId, Long activityId, Long mIncentiveId) { + IncentivePendingActivity incentivePendingActivity = new IncentivePendingActivity(); + incentivePendingActivity.setActivityId(activityId); + incentivePendingActivity.setRecordId(recordId); + incentivePendingActivity.setUserId(userId); + incentivePendingActivity.setMincentiveId(mIncentiveId); + if (incentivePendingActivity != null) { + incentivePendingActivityRepository.save(incentivePendingActivity); + } + + } + +} diff --git a/src/main/java/com/iemr/flw/service/impl/UwinSessionServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/UwinSessionServiceImpl.java index bb2a944c..759a2a58 100644 --- a/src/main/java/com/iemr/flw/service/impl/UwinSessionServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/UwinSessionServiceImpl.java @@ -8,6 +8,7 @@ import com.iemr.flw.dto.iemr.UwinSessionRequestDTO; import com.iemr.flw.dto.iemr.UwinSessionResponseDTO; import com.iemr.flw.masterEnum.GroupName; +import com.iemr.flw.masterEnum.StateCode; import com.iemr.flw.repo.iemr.IncentiveRecordRepo; import com.iemr.flw.repo.iemr.IncentivesRepo; import com.iemr.flw.repo.iemr.UserServiceRoleRepo; @@ -40,6 +41,9 @@ public class UwinSessionServiceImpl implements UwinSessionService { @Autowired private IncentiveRecordRepo recordRepo; + @Autowired + private UpdateIncentivePendindDocService updateIncentivePendindDocService; + @Override public UwinSessionResponseDTO saveSession(UwinSessionRequestDTO req) throws Exception { @@ -104,6 +108,44 @@ public UwinSessionResponseDTO saveSession(UwinSessionRequestDTO req) throws Exce return dto; } + @Override + public UwinSession updateSession(UwinSessionRequestDTO req, Long recordId, Long activityId) throws Exception { + Optional optionalUwinSession = repo.findById(recordId); + + if (optionalUwinSession.isPresent()) { + UwinSession session = optionalUwinSession.get(); // ✅ Use existing session + + // Update fields if present in request + if (req.getPlace() != null) session.setPlace(req.getPlace()); + if (req.getParticipants() != null) session.setParticipants(req.getParticipants()); + if (req.getDate() != null) session.setDate(req.getDate()); + + // Update attachments if present + if (req.getAttachments() != null && req.getAttachments().length > 0) { + List base64Images = Arrays.stream(req.getAttachments()) + .filter(file -> !file.isEmpty()) + .map(file -> { + try { + return Base64.getEncoder().encodeToString(file.getBytes()); + } catch (IOException e) { + throw new RuntimeException("Error converting image to Base64", e); + } + }) + .collect(Collectors.toList()); + + String imagesJson = objectMapper.writeValueAsString(base64Images); + session.setAttachmentsJson(imagesJson); + + // Trigger incentive update if attachments exist + updateIncentivePendindDocService.updateIncentive(activityId); + } + + repo.save(session); // ✅ Save updated session + return session; + } else { + throw new RuntimeException("Session not found for id: " + recordId); + } + } @Override public List getSessionsByAsha(Integer ashaId) throws Exception { @@ -130,9 +172,9 @@ public List getSessionsByAsha(Integer ashaId) throws Exc private void checkAndAddIncentive(UwinSession session) { IncentiveActivity incentiveActivityAM = incentivesRepo.findIncentiveMasterByNameAndGroup("CHILD_MOBILIZATION_SESSIONS", GroupName.IMMUNIZATION.getDisplayName()); IncentiveActivity incentiveActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("CHILD_MOBILIZATION_SESSIONS", GroupName.ACTIVITY.getDisplayName()); + Integer stateId = userRepo.getUserRole(session.getAshaId()).get(0).getStateId(); - - if(incentiveActivityAM!=null){ + if(incentiveActivityAM!=null && stateId!=null && stateId.equals(StateCode.AM.getStateCode())){ IncentiveActivityRecord record = recordRepo .findRecordByActivityIdCreatedDateBenId(incentiveActivityAM.getId(), session.getDate(), 0L,session.getAshaId()); if (record == null) { @@ -147,11 +189,23 @@ record = new IncentiveActivityRecord(); record.setBenId(0L); record.setAshaId(session.getAshaId()); record.setAmount(Long.valueOf(incentiveActivityAM.getRate())); - recordRepo.save(record); + if(session.getAttachmentsJson()!=null){ + record.setIsEligible(true); + recordRepo.save(record); + + }else { + record.setIsEligible(false); + IncentiveActivityRecord incentiveActivityRecord = recordRepo.save(record); + if(incentiveActivityRecord!=null){ + updateIncentivePendindDocService.updatePendingActivity(session.getAshaId(),session.getId(),incentiveActivityRecord.getId(),incentiveActivityAM.getId()); + + } + } + } } - if(incentiveActivityCH!=null){ + if(incentiveActivityCH!=null && stateId!=null && stateId.equals(StateCode.CG.getStateCode())){ IncentiveActivityRecord record = recordRepo .findRecordByActivityIdCreatedDateBenId(incentiveActivityCH.getId(), session.getDate(), 0L,session.getAshaId()); if (record == null) { @@ -166,6 +220,7 @@ record = new IncentiveActivityRecord(); record.setBenId(0L); record.setAshaId(session.getAshaId()); record.setAmount(Long.valueOf(incentiveActivityCH.getRate())); + record.setIsEligible(true); recordRepo.save(record); } } diff --git a/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java index c64654d3..579b84c9 100644 --- a/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java @@ -29,6 +29,7 @@ import com.iemr.flw.dto.iemr.*; import com.iemr.flw.masterEnum.GroupName; import com.iemr.flw.repo.iemr.*; +import com.iemr.flw.service.IncentiveLogicService; import com.iemr.flw.service.VillageLevelFormService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,8 +38,10 @@ import java.sql.Timestamp; import java.time.LocalDate; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -70,6 +73,9 @@ public class VillageLevelFormServiceImpl implements VillageLevelFormService { @Autowired private AHDFormRepo ahdFormRepo; + @Autowired + private IncentiveLogicService incentiveLogicService; + @Override public Boolean saveForm(VhndDto dto) { @@ -144,7 +150,12 @@ private Boolean saveVhncFormData(VhncFormDTO vhncFormDTO, Integer userID) { vhncForm.setFormType("VHNC"); vhncFormRepo.save(vhncForm); - checkAndAddIncentives(vhncForm.getVhncDate(), Math.toIntExact(vhncForm.getUserId()), "VHSNC_MEETING", vhncForm.getCreatedBy()); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + + LocalDate localDate = LocalDate.parse(vhncForm.getVhncDate(), formatter); + + Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + incentiveLogicService.incentiveForAttendingVhsnc(0L,date,date,Math.toIntExact(vhncForm.getUserId())); return true; } @@ -164,7 +175,12 @@ private Boolean savePhcForm(PhcReviewMeetingFormDTO dto, Integer userID) { phcReviewForm.setImage2(dto.getImage2()); phcReviewForm.setFormType("PHC"); phcReviewFormRepo.save(phcReviewForm); - checkAndAddIncentives(phcReviewForm.getPhcReviewDate(), Math.toIntExact(phcReviewForm.getUserId()), "CLUSTER_MEETING", phcReviewForm.getCreatedBy()); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + + LocalDate localDate = LocalDate.parse(phcReviewForm.getPhcReviewDate(), formatter); + + Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + incentiveLogicService.incentiveForClusterMeeting(0L,date,date,Math.toIntExact(phcReviewForm.getUserId())); return true; } @@ -226,7 +242,12 @@ private Boolean saveVhndFormData(VHNDFormDTO vhndFormDTO, Integer userID) { vhndForm.setFamilyPlanningHealthcare(vhndFormDTO.getFamilyPlanningHealthcare()); vhndForm.setFormType("VHND"); vhndRepo.save(vhndForm); - checkAndAddIncentives(vhndForm.getVhndDate(), vhndForm.getUserId(), "VHND_PARTICIPATION", vhndForm.getCreatedBy()); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + + LocalDate localDate = LocalDate.parse(vhndForm.getVhndDate(), formatter); + + Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + incentiveLogicService.incentiveForVhndMeeting(0L,date,date,vhndForm.getUserId()); return true; diff --git a/src/main/java/com/iemr/flw/utils/JwtAuthenticationUtil.java b/src/main/java/com/iemr/flw/utils/JwtAuthenticationUtil.java index 9144ca3b..5a9f76bf 100644 --- a/src/main/java/com/iemr/flw/utils/JwtAuthenticationUtil.java +++ b/src/main/java/com/iemr/flw/utils/JwtAuthenticationUtil.java @@ -11,7 +11,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; -import com.iemr.flw.domain.iemr.M_User; +import com.iemr.flw.domain.iemr.User; import com.iemr.flw.repo.iemr.EmployeeMasterRepo; import com.iemr.flw.utils.exception.IEMRException; @@ -75,13 +75,13 @@ public boolean validateUserIdAndJwtToken(String jwtToken) throws IEMRException { String userId = claims.get("userId", String.class); // Check if user data is present in Redis - M_User user = getUserFromCache(userId); + User user = getUserFromCache(userId); if (user == null) { // If not in Redis, fetch from DB and cache the result user = fetchUserFromDB(userId); } if (user == null) { - throw new IEMRException("Invalid User ID."); + throw new IEMRException("Invalid User ID or user is deactivated please contact to admin."); } return true; // Valid userId and JWT token @@ -91,9 +91,9 @@ public boolean validateUserIdAndJwtToken(String jwtToken) throws IEMRException { } } - private M_User getUserFromCache(String userId) { + private User getUserFromCache(String userId) { String redisKey = "user_" + userId; // The Redis key format - M_User user = (M_User) redisTemplate.opsForValue().get(redisKey); + User user = (User) redisTemplate.opsForValue().get(redisKey); if (user == null) { logger.warn("User not found in Redis. Will try to fetch from DB."); @@ -104,15 +104,15 @@ private M_User getUserFromCache(String userId) { return user; // Returns null if not found } - private M_User fetchUserFromDB(String userId) { + private User fetchUserFromDB(String userId) { // This method will only be called if the user is not found in Redis. String redisKey = "user_" + userId; // Redis key format // Fetch user from DB - M_User user = userLoginRepo.getUserByUserID(Integer.parseInt(userId)); + User user = userLoginRepo.findUserByUserID(Integer.parseInt(userId)); if (user != null) { - M_User userHash = new M_User(); + User userHash = new User(); userHash.setUserID(user.getUserID()); userHash.setUserName(user.getUserName()); diff --git a/src/main/java/com/iemr/flw/utils/redis/RedisConfig.java b/src/main/java/com/iemr/flw/utils/redis/RedisConfig.java index 0a279319..98acde7a 100644 --- a/src/main/java/com/iemr/flw/utils/redis/RedisConfig.java +++ b/src/main/java/com/iemr/flw/utils/redis/RedisConfig.java @@ -7,7 +7,7 @@ import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; -import com.iemr.flw.domain.iemr.M_User; +import com.iemr.flw.domain.iemr.User; @Configuration public class RedisConfig { @@ -20,7 +20,7 @@ public RedisTemplate redisTemplate(RedisConnectionFactory factor template.setKeySerializer(new StringRedisSerializer()); // Use Jackson2JsonRedisSerializer for values (Users objects) - Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(M_User.class); + Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(User.class); template.setValueSerializer(serializer); return template;