diff --git a/src/main/java/com/iemr/common/config/PrimaryDBConfig.java b/src/main/java/com/iemr/common/config/PrimaryDBConfig.java index da5268b3..36463ab9 100644 --- a/src/main/java/com/iemr/common/config/PrimaryDBConfig.java +++ b/src/main/java/com/iemr/common/config/PrimaryDBConfig.java @@ -47,7 +47,7 @@ @Configuration @EnableTransactionManagement @EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", basePackages = { "com.iemr.common.repository", - "com.iemr.common.repo", "com.iemr.common.notification.agent", "com.iemr.common.covidVaccination", "com.iemr.common.repository.everwell.*", " com.iemr.common.repository.users" }) + "com.iemr.common.repo", "com.iemr.common.notification.agent", "com.iemr.common.covidVaccination", "com.iemr.common.repository.everwell.*", "com.iemr.common.data.grievance", "com.iemr.common.repository.users" }) public class PrimaryDBConfig { Logger logger = LoggerFactory.getLogger(this.getClass().getName()); @@ -83,7 +83,7 @@ public DataSource dataSource() { public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("dataSource") DataSource dataSource) { return builder.dataSource(dataSource).packages("com.iemr.common.data", "com.iemr.common.notification", - "com.iemr.common.model", "com.iemr.common.covidVaccination", "com.iemr.common.data.everwell", "com.iemr.common.data.users").persistenceUnit("db_iemr").build(); + "com.iemr.common.model", "com.iemr.common.covidVaccination", "com.iemr.common.data.everwell", "com.iemr.common.data.grievance", "com.iemr.common.data.users").persistenceUnit("db_iemr").build(); } @Primary diff --git a/src/main/java/com/iemr/common/controller/grievance/GrievanceController.java b/src/main/java/com/iemr/common/controller/grievance/GrievanceController.java new file mode 100644 index 00000000..563334e4 --- /dev/null +++ b/src/main/java/com/iemr/common/controller/grievance/GrievanceController.java @@ -0,0 +1,56 @@ +package com.iemr.common.controller.grievance; + + +import com.iemr.common.service.grievance.GrievanceDataSync; +import com.iemr.common.utils.exception.IEMRException; +import com.iemr.common.utils.response.OutputResponse; + +import io.swagger.v3.oas.annotations.Operation; + + +import javax.ws.rs.core.MediaType; + +import org.json.JSONException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class GrievanceController { + final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + + private GrievanceDataSync grievanceDataSync; + + @Autowired + public GrievanceController(GrievanceDataSync grievanceDataSync) { + this.grievanceDataSync = grievanceDataSync; + } + + @CrossOrigin() + @Operation(summary = "/unallocatedGrievanceCount") + @PostMapping(value = "/unallocatedGrievanceCount", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, headers = "Authorization") + public String fetchUnallocatedGrievanceCount() { + OutputResponse responseData = new OutputResponse(); + try { + responseData.setResponse(grievanceDataSync.fetchUnallocatedGrievanceCount()); + } + catch (IEMRException e) { + logger.error("Business logic error in UnallocatedGrievanceCount" + e.getMessage(), e); + responseData.setError(e); + } + catch (JSONException e) { + logger.error("JSON processing error in UnallocatedGrievanceCount" + e.getMessage(), e); + responseData.setError(e); + } + catch (Exception e) { + logger.error("UnallocatedGrievanceCount failed with error" + e.getMessage(), e); + responseData.setError(e); + } + return responseData.toString(); + + } +} diff --git a/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java b/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java index a428c743..13457a96 100644 --- a/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java +++ b/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java @@ -7,9 +7,6 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; - - - import com.iemr.common.data.grievance.GrievanceDetails; @Repository @@ -18,6 +15,8 @@ public interface GrievanceDataRepo extends CrudRepository 0 FROM GrievanceDetails g WHERE g.complaintId = :complaintId") boolean existsByComplaintId(@Param("complaintId") String complaintId); - + @Query("select count(request) " + + "from GrievanceDetails request where request.isAllocated = false") + public Long fetchUnallocatedGrievanceCount(); } diff --git a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSync.java b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSync.java index 188e1cb5..ec0992f7 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSync.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSync.java @@ -3,6 +3,13 @@ import java.util.List; import java.util.Map; +import org.json.JSONException; + +import com.iemr.common.utils.exception.IEMRException; + public interface GrievanceDataSync { public List> dataSyncToGrievance(); + + public String fetchUnallocatedGrievanceCount() throws IEMRException, JSONException; + } diff --git a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java index c13a92a0..c9e421e6 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java @@ -11,7 +11,8 @@ import java.util.List; import java.util.Map; - import org.json.JSONObject; +import org.json.JSONException; +import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -37,7 +38,8 @@ import com.iemr.common.repository.grievance.GrievanceFetchBenDetailsRepo; import com.iemr.common.repository.grievance.GrievanceTransactionRepo; import com.iemr.common.repository.location.LocationStateRepository; - import com.iemr.common.utils.mapper.InputMapper; +import com.iemr.common.utils.exception.IEMRException; +import com.iemr.common.utils.mapper.InputMapper; @Service @PropertySource("classpath:application.properties") @@ -371,5 +373,19 @@ private void generateGrievanceAuthToken() { } } } + + public String fetchUnallocatedGrievanceCount() throws IEMRException, JSONException { + logger.debug("Request received for fetchUnallocatedGrievanceCount"); + + Long unallocatedCount = grievanceDataRepo.fetchUnallocatedGrievanceCount(); + + if (unallocatedCount == null) { + throw new IEMRException("Failed to fetch unallocated grievance count"); + } + + JSONObject result = new JSONObject(); + result.put("count", unallocatedCount); + return result.toString(); + } }