diff --git a/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java b/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java index 1411120..9d88445 100644 --- a/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java +++ b/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java @@ -2,19 +2,18 @@ package com.billpaymentservice.bbps.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.ResponseEntity; - import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.billpaymentservice.bbps.dto.ResponseModel; +import com.billpaymentservice.bbps.dto.request.AllMasterOptionsRequest; import com.billpaymentservice.bbps.dto.request.CloseComplaintRequest; import com.billpaymentservice.bbps.dto.request.ComplainStatusRequest; import com.billpaymentservice.bbps.dto.request.ComplaintRequestDTO; @@ -45,39 +44,42 @@ public class ComplainController { } @PostMapping(value = "/checkComplaintStatus", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity getComplaintStatus(@RequestBody ComplainStatusRequest request) { + public ResponseEntity getComplaintStatus(@Validated @RequestBody ComplainStatusRequest request) { log.info("Received complaint status request for complaintId: {}", request.getComplaintId()); ResponseModel response = complainService.getComplaintStatus(request); return ResponseEntity.ok(response); } @PostMapping(value = "/reOpenComplaint", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity reOpenComplaint(@RequestBody ReOpenComplain request) { + public ResponseEntity reOpenComplaint(@Validated @RequestBody ReOpenComplain request) { log.info("Received ReOpen Complaint request for complaintId: {}", request.getComplaintId()); ResponseModel response = complainService.reOpenComplaint(request); return ResponseEntity.ok(response); } @PostMapping(value = "/viewComplainsHistory", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity viewComplaintHistory(@RequestBody ComplainStatusRequest request) { + public ResponseEntity viewComplaintHistory(@Validated @RequestBody ComplainStatusRequest request) { log.info("Received complaint View Complaint History request for complaintId: {}", request.getComplaintId()); ResponseModel response = complainService.viewComplaintHistory(request); return ResponseEntity.ok(response); } @PostMapping(value = "/closeComplaint", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity closeComplaint(@RequestBody CloseComplaintRequest request) { + public ResponseEntity closeComplaint(@Validated @RequestBody CloseComplaintRequest request) { log.info("Received complaint Close Complaint request for complaintId: {}", request.getComplaintId()); ResponseModel response = complainService.closeComplaint(request); return ResponseEntity.ok(response); } @PostMapping("/viewComplaintsById") - public ResponseEntity viewComplaintById(@RequestBody ViewComplainByIdRequest request) { + public ResponseEntity viewComplaintById(@Validated @RequestBody ViewComplainByIdRequest request) { log.info("Received complaint View Complaint By ID request for complaintId: {}", request.getComplaintId()); ResponseModel response = complainService.viewComplaintById(request); return ResponseEntity.ok(response); } - + @PostMapping("/allMasterOptions") + public ResponseEntity getAllStatuses(@Validated @RequestBody AllMasterOptionsRequest request) { + return ResponseEntity.ok(complainService.getAllActiveStatuses(request)); + } } diff --git a/src/main/java/com/billpaymentservice/bbps/dto/request/AllMasterOptionsRequest.java b/src/main/java/com/billpaymentservice/bbps/dto/request/AllMasterOptionsRequest.java new file mode 100644 index 0000000..00147bc --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/request/AllMasterOptionsRequest.java @@ -0,0 +1,10 @@ +package com.billpaymentservice.bbps.dto.request; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class AllMasterOptionsRequest extends BaseClass { + +} diff --git a/src/main/java/com/billpaymentservice/bbps/entites/ComplaintStatusOptionsMaster.java b/src/main/java/com/billpaymentservice/bbps/entites/ComplaintStatusOptionsMaster.java new file mode 100644 index 0000000..ad4a10d --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/entites/ComplaintStatusOptionsMaster.java @@ -0,0 +1,30 @@ +package com.billpaymentservice.bbps.entites; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "complaint_options_status_master") +@Getter +@Setter +@ToString +public class ComplaintStatusOptionsMaster { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + @Column(name = "status_label_name") + private String statusLabelName; + + @Column(name = "is_deleted") + private Boolean isDeleted = false; + +} diff --git a/src/main/java/com/billpaymentservice/bbps/repository/ComplaintOptionsStatusMasterRepository.java b/src/main/java/com/billpaymentservice/bbps/repository/ComplaintOptionsStatusMasterRepository.java new file mode 100644 index 0000000..de11e13 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/repository/ComplaintOptionsStatusMasterRepository.java @@ -0,0 +1,16 @@ +package com.billpaymentservice.bbps.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.billpaymentservice.bbps.entites.ComplaintStatusOptionsMaster; + +@Repository +public interface ComplaintOptionsStatusMasterRepository extends JpaRepository { + + @Query("SELECT c FROM ComplaintStatusOptionsMaster c WHERE c.isDeleted = false") + List findAllActiveStatuses(); +} diff --git a/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java b/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java index def76b4..0526743 100644 --- a/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java +++ b/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java @@ -1,6 +1,7 @@ package com.billpaymentservice.bbps.service; import com.billpaymentservice.bbps.dto.ResponseModel; +import com.billpaymentservice.bbps.dto.request.AllMasterOptionsRequest; import com.billpaymentservice.bbps.dto.request.CloseComplaintRequest; import com.billpaymentservice.bbps.dto.request.ComplainStatusRequest; import com.billpaymentservice.bbps.dto.request.ReOpenComplain; @@ -18,10 +19,12 @@ public interface ComplainService { ResponseModel closeComplaint(CloseComplaintRequest request); - ResponseModel addComplain(ComplaintRequestDTO complainRequestDTO); + ResponseModel addComplain(ComplaintRequestDTO complainRequestDTO); ResponseModel viewComplaintById(ViewComplainByIdRequest request); + ResponseModel getAllActiveStatuses(AllMasterOptionsRequest request); + ResponseModel checkTxnStatus(TxnStatusRequest request); } diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java index 63c32d7..7470e9e 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java @@ -1,6 +1,6 @@ package com.billpaymentservice.bbps.serviceImpl; -import java.util.HashMap; +import java.util.List; import java.util.Map; import org.modelmapper.ModelMapper; @@ -8,7 +8,6 @@ import org.modelmapper.convention.MatchingStrategies; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.configurationprocessor.json.JSONObject; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; @@ -16,25 +15,28 @@ import org.springframework.web.client.RestClient; import com.billpaymentservice.bbps.dto.GeneralResp; import com.billpaymentservice.bbps.dto.ResponseModel; +import com.billpaymentservice.bbps.dto.request.AllMasterOptionsRequest; import com.billpaymentservice.bbps.dto.request.CloseComplaintRequest; import com.billpaymentservice.bbps.dto.request.ComplainStatusRequest; import com.billpaymentservice.bbps.dto.request.ComplaintRequestDTO; import com.billpaymentservice.bbps.dto.request.ReOpenComplain; import com.billpaymentservice.bbps.dto.request.TxnStatusRequest; import com.billpaymentservice.bbps.dto.request.ViewComplainByIdRequest; -import com.billpaymentservice.bbps.dto.response.CloseComplaintStatusResponse; import com.billpaymentservice.bbps.dto.response.ComplaintHistoryStatusResponse; import com.billpaymentservice.bbps.dto.response.ComplaintResponse; + import com.billpaymentservice.bbps.dto.response.ComplaintStatusResponse; import com.billpaymentservice.bbps.dto.response.TxnStatusResponse; import com.billpaymentservice.bbps.dto.response.ViewComplainByIdResponse; import com.billpaymentservice.bbps.entites.BharatConnectMaster; import com.billpaymentservice.bbps.entites.ComplaintDetails; +import com.billpaymentservice.bbps.entites.ComplaintStatusOptionsMaster; import com.billpaymentservice.bbps.entites.InboundTraceLog; import com.billpaymentservice.bbps.entites.OutboundTraceLog; import com.billpaymentservice.bbps.exception.CustomException; import com.billpaymentservice.bbps.repository.BharatConnectMasterRepository; import com.billpaymentservice.bbps.repository.ComplainRepository; +import com.billpaymentservice.bbps.repository.ComplaintOptionsStatusMasterRepository; import com.billpaymentservice.bbps.service.ComplainService; import com.billpaymentservice.bbps.util.BBPSConstant; import com.billpaymentservice.bbps.util.BillerMapperHelper; @@ -59,19 +61,22 @@ public class ComplainServiceImpl implements ComplainService { private final BharatConnectMasterRepository beneficiaryDetailsRepository; private final BillerMapperHelper mapperHelper; private final ComplainRepository complainRepository; + private final ComplaintOptionsStatusMasterRepository complaintStatusMasterRepository; private final ObjectMapper objectMapper = new ObjectMapper(); private static final Logger LOGGER = LoggerFactory.getLogger(AgentServiceImpl.class); public ComplainServiceImpl(RestClient restClient, HttpService httpService, Helper helper, BharatConnectMasterRepository beneficiaryDetailsRepository, BillerMapperHelper mapperHelper, - ComplainRepository complainRepository) { + ComplainRepository complainRepository, + ComplaintOptionsStatusMasterRepository complaintStatusMasterRepository) { this.restClient = restClient; this.httpService = httpService; this.helper = helper; this.beneficiaryDetailsRepository = beneficiaryDetailsRepository; this.mapperHelper = mapperHelper; this.complainRepository = complainRepository; + this.complaintStatusMasterRepository = complaintStatusMasterRepository; } @Override @@ -135,84 +140,97 @@ public class ComplainServiceImpl implements ComplainService { @Override public ResponseModel getComplaintStatus(ComplainStatusRequest request) { LOGGER.info("Fetching Compalint Status by Complaint Id={}", request.getComplaintId(), request.getReqId()); - String apiName = "Complaint Status"; - String txnId = helper.generateTxnId(15); - String reqId = request.getReqId(); - String complaintId = request.getComplaintId(); - String fullUrl = agentDtaUrl + BBPSConstant.COMPALINT_STATUS; - - helper.validateMerchant(request.getMid()); - - BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); - HttpHeaders headers = new HttpHeaders(); - headers.set("x-digiledge-key", headersData.getXDigiledgeKey()); - headers.set("agentId", headersData.getAgentId()); - headers.set("tenantId", headersData.getTenantId()); - headers.setContentType(MediaType.APPLICATION_JSON); - - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - String requestJson = helper.convertObjectToJson(request); - - InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "POST", - requestJson); - OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "POST", complaintId); - LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); +// String apiName = "Complaint Status"; +// String txnId = helper.generateTxnId(15); +// String reqId = request.getReqId(); +// String complaintId = request.getComplaintId(); +// String fullUrl = agentDtaUrl + BBPSConstant.COMPALINT_STATUS; +// +// helper.validateMerchant(request.getMid()); +// +// BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); +// HttpHeaders headers = new HttpHeaders(); +// headers.set("x-digiledge-key", headersData.getXDigiledgeKey()); +// headers.set("agentId", headersData.getAgentId()); +// headers.set("tenantId", headersData.getTenantId()); +// headers.setContentType(MediaType.APPLICATION_JSON); +// +// ObjectMapper objectMapper = new ObjectMapper(); +// objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); +// String requestJson = helper.convertObjectToJson(request); +// +// InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "POST", +// requestJson); +// OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "POST", complaintId); +// LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); try { +// +// LOGGER.info("Calling external API: {}", fullUrl); +// Map responseMap = httpService.postRequest(fullUrl, requestJson, headers); +// String responseData = responseMap.get("data"); +// LOGGER.info("Complaint FetchById Response: {}", responseData); +// +// +// +// // Dummy complaint map start +// JsonNode root = objectMapper.readTree(responseData); +// String message = root.path("message").asText(""); +// String statuss = root.path("status").asText(""); +// +// // dummy data send when server response is coming error. +// // Check for internal server error +// if ("Internal server error, please try again later".equalsIgnoreCase(message)) { +// +// Map dummyComplaint = mapperHelper.getComplaintStatusJson(); +// +// LOGGER.info("Returning Dummy Response: {}", dummyComplaint); +// +// // Pass map directly to ResponseModel +// return new ResponseModel("Successfully requested complaint status", "success", 200, dummyComplaint); +// } +// // Dummy complaint map End +// +// helper.updateOutboundLogResponse(outboundLog, responseData); +// +// Map dataMap = objectMapper.readValue(responseData, +// new TypeReference>() { +// }); +// +// if (!dataMap.containsKey("genericResponse")) { +// helper.updateInboundLogFailure(inboundLog, responseData, "INVALID_RESPONSE"); +// LOGGER.warn("Invalid response structure for txnId: {}", txnId); +// throw new CustomException(String.valueOf(dataMap.get("message")), String.valueOf(dataMap.get("status")), +// Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), +// String.valueOf(dataMap.get("remarks"))); +// } +// +// ComplaintStatusResponse responseWrapper = objectMapper.convertValue(dataMap, ComplaintStatusResponse.class); +// GeneralResp generalResp = responseWrapper.getGeneralResp(); +// +// String status = generalResp.getStatus(); +// LOGGER.info("Current Complaint Status: {}", status); +// +// helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); +// mapperHelper.saveComplaintStatus(responseWrapper, reqId, txnId); +// LOGGER.info("Complaint data saved successfully for billId: {}", complaintId); +// +// return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), +// Integer.parseInt(generalResp.getStatusCode()), responseWrapper); +// } catch (JsonProcessingException e) { +// LOGGER.error("Error parsing Complaint Id JSON: {}", e.getMessage(), e); +// helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); +// throw new CustomException("Invalid JSON received from API"); - LOGGER.info("Calling external API: {}", fullUrl); - Map responseMap = httpService.postRequest(fullUrl, requestJson, headers); - String responseData = responseMap.get("data"); - LOGGER.info("Complaint FetchById Response: {}", responseData); + Map dummyComplaint = mapperHelper.getComplaintStatusJson(); - // Dummy complaint map start - JSONObject json = new JSONObject(responseData); - String message = json.optString("message"); + LOGGER.info("Returning Dummy Response: {}", dummyComplaint); - // dummy data send when server response is coming error. - // Check for internal server error - if ("Internal server error, please try again later".equalsIgnoreCase(message)) { + // Pass map directly to ResponseModel + return new ResponseModel("Successfully requested complaint status", "success", 200, dummyComplaint); - Map dummyComplaint = mapperHelper.getComplaintStatusJson(); - - LOGGER.info("Returning Dummy Response: {}", dummyComplaint); - - // Pass map directly to ResponseModel - return new ResponseModel("Successfully requested complaint status", "success", 200, dummyComplaint); - } // Dummy complaint map End - helper.updateOutboundLogResponse(outboundLog, responseData); - - Map dataMap = objectMapper.readValue(responseData, - new TypeReference>() { - }); - - if (!dataMap.containsKey("genericResponse")) { - helper.updateInboundLogFailure(inboundLog, responseData, "INVALID_RESPONSE"); - LOGGER.warn("Invalid response structure for txnId: {}", txnId); - throw new CustomException(String.valueOf(dataMap.get("message")), String.valueOf(dataMap.get("status")), - Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), - String.valueOf(dataMap.get("remarks"))); - } - - ComplaintStatusResponse responseWrapper = objectMapper.convertValue(dataMap, ComplaintStatusResponse.class); - GeneralResp generalResp = responseWrapper.getGeneralResp(); - - String status = generalResp.getStatus(); - LOGGER.info("Current Complaint Status: {}", status); - - helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); - mapperHelper.saveComplaintStatus(responseWrapper, reqId, txnId); - LOGGER.info("Complaint data saved successfully for billId: {}", complaintId); - - return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), - Integer.parseInt(generalResp.getStatusCode()), responseWrapper); - } catch (JsonProcessingException e) { - LOGGER.error("Error parsing Complaint Id JSON: {}", e.getMessage(), e); - helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); - throw new CustomException("Invalid JSON received from API"); } catch (Exception ex) { LOGGER.error("Error parsing response JSON", ex); throw new CustomException("Error " + ex.getMessage()); @@ -222,84 +240,76 @@ public class ComplainServiceImpl implements ComplainService { @Override public ResponseModel reOpenComplaint(ReOpenComplain request) { LOGGER.info("Fetching ReOpen Complaint by Complaint Id={}", request.getComplaintId(), request.getReqId()); - String apiName = "Complaint Status"; - String txnId = helper.generateTxnId(15); - String reqId = request.getReqId(); - String complaintId = request.getComplaintId(); - String fullUrl = agentDtaUrl + BBPSConstant.REOPEN_COMPALINT; - - helper.validateMerchant(request.getMid()); - - BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); - HttpHeaders headers = new HttpHeaders(); - headers.set("x-digiledge-key", headersData.getXDigiledgeKey()); - headers.set("agentId", headersData.getAgentId()); - headers.set("tenantId", headersData.getTenantId()); - headers.setContentType(MediaType.APPLICATION_JSON); - - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - String requestJson = helper.convertObjectToJson(request); - - InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "POST", - requestJson); - OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "POST", complaintId); - LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); +// String apiName = "Complaint Status"; +// String txnId = helper.generateTxnId(15); +// String reqId = request.getReqId(); +// String complaintId = request.getComplaintId(); +// String fullUrl = agentDtaUrl + BBPSConstant.REOPEN_COMPALINT; +// +// helper.validateMerchant(request.getMid()); +// +// BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); +// HttpHeaders headers = new HttpHeaders(); +// headers.set("x-digiledge-key", headersData.getXDigiledgeKey()); +// headers.set("agentId", headersData.getAgentId()); +// headers.set("tenantId", headersData.getTenantId()); +// headers.setContentType(MediaType.APPLICATION_JSON); +// +// ObjectMapper objectMapper = new ObjectMapper(); +// objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); +// String requestJson = helper.convertObjectToJson(request); +// +// InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "POST", +// requestJson); +// OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "POST", complaintId); +// LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); try { - LOGGER.info("Calling external API: {}", fullUrl); - Map responseMap = httpService.postRequest(fullUrl, requestJson, headers); - String responseData = responseMap.get("data"); - LOGGER.info("Complaint ReOpen FetchById Response: {}", responseData); +// LOGGER.info("Calling external API: {}", fullUrl); +// Map responseMap = httpService.postRequest(fullUrl, requestJson, headers); +// String responseData = responseMap.get("data"); +// LOGGER.info("Complaint ReOpen FetchById Response: {}", responseData); // Dummy complaint map start // Check for internal server error - int jsonStartIndex = responseData.indexOf("{"); - if (jsonStartIndex != -1) { - responseData = responseData.substring(jsonStartIndex); - } - JSONObject json = new JSONObject(responseData); - String message = json.optString("message"); - if ("ERROR! Complaint cant be reopened at this state".equalsIgnoreCase(message)) { + Map dummyComplaint = mapperHelper.getDummyReopenComplaintJson(); + LOGGER.info("Returning Dummy Response: {}", dummyComplaint); - Map dummyComplaint = mapperHelper.getDummyReopenComplaintJson(); - LOGGER.info("Returning Dummy Response: {}", dummyComplaint); + return new ResponseModel("Complaint reopening requested", "success", 200, dummyComplaint); - return new ResponseModel("Complaint reopening requested", "success", 200, dummyComplaint); - } // Dummy complaint map End - helper.updateOutboundLogResponse(outboundLog, responseData); - - Map dataMap = objectMapper.readValue(responseData, - new TypeReference>() { - }); - - if (!dataMap.containsKey("generalResp")) { - helper.updateInboundLogFailure(inboundLog, responseData, "INVALID_RESPONSE"); - LOGGER.warn("Invalid response structure for txnId: {}", txnId); - throw new CustomException(String.valueOf(dataMap.get("message")), String.valueOf(dataMap.get("status")), - Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), - String.valueOf(dataMap.get("remarks"))); - } - - ComplaintStatusResponse responseWrapper = objectMapper.convertValue(dataMap, ComplaintStatusResponse.class); - GeneralResp generalResp = responseWrapper.getGeneralResp(); - - String status = generalResp.getStatus(); - LOGGER.info("Current Complaint ReOpen Status: {}", status); - - helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); - mapperHelper.saveReOpenComplaint(responseWrapper, reqId, txnId); - LOGGER.info("Complaint ReOpen data saved successfully for billId: {}", complaintId); - - return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), - Integer.parseInt(generalResp.getStatusCode()), responseWrapper); - } catch (JsonProcessingException e) { - LOGGER.error("Error parsing Complaint Id JSON: {}", e.getMessage(), e); - helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); - throw new CustomException("Invalid JSON received from API"); +// helper.updateOutboundLogResponse(outboundLog, responseData); +// +// Map dataMap = objectMapper.readValue(responseData, +// new TypeReference>() { +// }); +// +// if (!dataMap.containsKey("generalResp")) { +// helper.updateInboundLogFailure(inboundLog, responseData, "INVALID_RESPONSE"); +// LOGGER.warn("Invalid response structure for txnId: {}", txnId); +// throw new CustomException(String.valueOf(dataMap.get("message")), String.valueOf(dataMap.get("status")), +// Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), +// String.valueOf(dataMap.get("remarks"))); +// } +// +// ComplaintStatusResponse responseWrapper = objectMapper.convertValue(dataMap, ComplaintStatusResponse.class); +// GeneralResp generalResp = responseWrapper.getGeneralResp(); +// +// String status = generalResp.getStatus(); +// LOGGER.info("Current Complaint ReOpen Status: {}", status); +// +// helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); +// mapperHelper.saveReOpenComplaint(responseWrapper, reqId, txnId); +// LOGGER.info("Complaint ReOpen data saved successfully for billId: {}", complaintId); +// +// return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), +// Integer.parseInt(generalResp.getStatusCode()), responseWrapper); +// } catch (JsonProcessingException e) { +// LOGGER.error("Error parsing Complaint Id JSON: {}", e.getMessage(), e); +// helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); +// throw new CustomException("Invalid JSON received from API"); } catch (Exception ex) { LOGGER.error("Error parsing response JSON", ex); throw new CustomException("Error " + ex.getMessage()); @@ -376,92 +386,83 @@ public class ComplainServiceImpl implements ComplainService { @Override public ResponseModel closeComplaint(CloseComplaintRequest request) { LOGGER.info("Fetching Close Complaint by Complaint Id={}", request.getComplaintId(), request.getReqId()); - String apiName = "Complaint Status"; - String txnId = helper.generateTxnId(15); - String reqId = request.getReqId(); - String complaintId = request.getComplaintId(); - String fullUrl = agentDtaUrl + BBPSConstant.CLOSE_COMPLAINT; - - helper.validateMerchant(request.getMid()); - - BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); - HttpHeaders headers = new HttpHeaders(); - headers.set("x-digiledge-key", headersData.getXDigiledgeKey()); - headers.set("agentId", headersData.getAgentId()); - headers.set("tenantId", headersData.getTenantId()); - headers.setContentType(MediaType.APPLICATION_JSON); - - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - String requestJson = helper.convertObjectToJson(request); - - InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "POST", - requestJson); - OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "POST", complaintId); - LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); +// String apiName = "Complaint Status"; +// String txnId = helper.generateTxnId(15); +// String reqId = request.getReqId(); +// String complaintId = request.getComplaintId(); +// String fullUrl = agentDtaUrl + BBPSConstant.CLOSE_COMPLAINT; +// +// helper.validateMerchant(request.getMid()); +// +// BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); +// HttpHeaders headers = new HttpHeaders(); +// headers.set("x-digiledge-key", headersData.getXDigiledgeKey()); +// headers.set("agentId", headersData.getAgentId()); +// headers.set("tenantId", headersData.getTenantId()); +// headers.setContentType(MediaType.APPLICATION_JSON); +// +// ObjectMapper objectMapper = new ObjectMapper(); +// objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); +// String requestJson = helper.convertObjectToJson(request); +// +// InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "POST", +// requestJson); +// OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "POST", complaintId); +// LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); try { - LOGGER.info("Calling external API: {}", fullUrl); - Map responseMap = httpService.postRequest(fullUrl, requestJson, headers); - String responseData = responseMap.get("data"); - LOGGER.info("Complaint Close FetchById Response: {}", responseData); +// LOGGER.info("Calling external API: {}", fullUrl); +// Map responseMap = httpService.postRequest(fullUrl, requestJson, headers); +// String responseData = responseMap.get("data"); +// LOGGER.info("Complaint Close FetchById Response: {}", responseData); // Dummy complaint map Start - int jsonStartIndex = responseData.indexOf("{"); - if (jsonStartIndex != -1) { - responseData = responseData.substring(jsonStartIndex); - } - JSONObject json = new JSONObject(responseData); - String message = json.optString("message"); + Map dummyComplaint = mapperHelper.getDummyClosureComplaintJson(); + LOGGER.info("Returning Dummy Response: {}", dummyComplaint); - if ("ERROR! Complaint cant be closed at this state".equalsIgnoreCase(message)) { + return new ResponseModel("Complaint closure requested", "success", 200, dummyComplaint); - Map dummyComplaint = mapperHelper.getDummyClosureComplaintJson(); - LOGGER.info("Returning Dummy Response: {}", dummyComplaint); - - return new ResponseModel("Complaint closure requested", "success", 200, dummyComplaint); - } // Dummy complaint map End - helper.updateOutboundLogResponse(outboundLog, responseData); - - Map dataMap = objectMapper.readValue(responseData, - new TypeReference>() { - }); - - if (!dataMap.containsKey("genericResponse")) { - helper.updateInboundLogFailure(inboundLog, responseData, "INVALID_RESPONSE"); - LOGGER.warn("Invalid response structure for txnId: {}", txnId); - throw new CustomException(String.valueOf(dataMap.get("message")), String.valueOf(dataMap.get("status")), - Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), - String.valueOf(dataMap.get("remarks"))); - } - - CloseComplaintStatusResponse responseWrapper = objectMapper.convertValue(dataMap, - CloseComplaintStatusResponse.class); - GeneralResp generalResp = responseWrapper.getGeneralResp(); - - String status = generalResp.getStatus(); - LOGGER.info("Current Complaint Close Status: {}", status); - - helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); - // mapperHelper.saveReOpenComplaint(responseWrapper, reqId, txnId); - LOGGER.info("Complaint Close data saved successfully for billId: {}", complaintId); - - return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), - Integer.parseInt(generalResp.getStatusCode()), responseWrapper); - } catch (JsonProcessingException e) { - LOGGER.error("Error parsing Complaint Id JSON: {}", e.getMessage(), e); - helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); - throw new CustomException("Invalid JSON received from API"); +// helper.updateOutboundLogResponse(outboundLog, responseData); +// +// Map dataMap = objectMapper.readValue(responseData, +// new TypeReference>() { +// }); +// +// if (!dataMap.containsKey("genericResponse")) { +// helper.updateInboundLogFailure(inboundLog, responseData, "INVALID_RESPONSE"); +// LOGGER.warn("Invalid response structure for txnId: {}", txnId); +// throw new CustomException(String.valueOf(dataMap.get("message")), String.valueOf(dataMap.get("status")), +// Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), +// String.valueOf(dataMap.get("remarks"))); +// } +// +// CloseComplaintStatusResponse responseWrapper = objectMapper.convertValue(dataMap, +// CloseComplaintStatusResponse.class); +// GeneralResp generalResp = responseWrapper.getGeneralResp(); +// +// String status = generalResp.getStatus(); +// LOGGER.info("Current Complaint Close Status: {}", status); +// +// helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); +// // mapperHelper.saveReOpenComplaint(responseWrapper, reqId, txnId); +// LOGGER.info("Complaint Close data saved successfully for billId: {}", complaintId); +// +// return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), +// Integer.parseInt(generalResp.getStatusCode()), responseWrapper); +// } catch (JsonProcessingException e) { +// LOGGER.error("Error parsing Complaint Id JSON: {}", e.getMessage(), e); +// helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); +// throw new CustomException("Invalid JSON received from API"); } catch (Exception e) { throw new CustomException("Invalid JSON received from API" + e.getMessage()); } } @Override - public ResponseModel viewComplaintById( ViewComplainByIdRequest request) { - + public ResponseModel viewComplaintById(ViewComplainByIdRequest request) { + LOGGER.info("Fetching View Complaint History Complaint by Complaint Id={}", request.getComplaintId(), request.getReqId()); String apiName = "View Complaint By ID"; @@ -515,8 +516,14 @@ public class ComplainServiceImpl implements ComplainService { LOGGER.info("Current Complaint ReOpen Status: {}", status); helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); + + // String saveComplaintHistory = + // mapperHelper.saveComplaintHistory(responseWrapper, reqId, txnId); + // LOGGER.info("Complaint ReOpen data saved successfully for Count History: {}", + // saveComplaintHistory); String saveComplaint = mapperHelper.saveComplainStatusDetail(responseWrapper, reqId, txnId); - //LOGGER.info("Complaint ReOpen data saved successfully for Count History: {}", saveComplaintHistory); + // LOGGER.info("Complaint ReOpen data saved successfully for Count History: {}", + // saveComplaintHistory); return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), Integer.parseInt(generalResp.getStatusCode()), responseWrapper); @@ -528,9 +535,52 @@ public class ComplainServiceImpl implements ComplainService { } @Override + public ResponseModel getAllActiveStatuses(AllMasterOptionsRequest request) { + + try { + + LOGGER.info("Fetch All Master Options - MID: {}", request.getMid()); + String apiName = "View All Options Fetch By Id"; + String txnId = helper.generateTxnId(15); + String reqId = request.getReqId(); + String fullUrl = "Data Base Options"; + + String requestJson = helper.convertObjectToJson(request); + // Validate merchant + helper.validateMerchant(request.getMid()); + InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "GET", + requestJson); + OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "GET", null); + LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); + + // Fetch data from DB + List allActiveStatuses = complaintStatusMasterRepository + .findAllActiveStatuses(); + + LOGGER.info("Total Master Records Found: {}", allActiveStatuses != null ? allActiveStatuses.size() : 0); + + // Check empty or null + if (allActiveStatuses == null || allActiveStatuses.isEmpty()) { + helper.updateInboundLogFailure(inboundLog, allActiveStatuses.toString(), "Null Data From DB"); + return new ResponseModel("No Master Fields Found", "failed", 404, null, 0); + } + + helper.updateInboundLogSuccess(inboundLog, allActiveStatuses.toString(), "200"); + // SUCCESS RESPONSE + return new ResponseModel("All Master Fields Fetch", "SUCCESS", 200, allActiveStatuses, + allActiveStatuses.size()); + + } + + catch (Exception e) { + LOGGER.error("Error while fetching master options", e); + return new ResponseModel("Something went wrong", "failed", 500, null, 0); + } + + } + public ResponseModel checkTxnStatus(TxnStatusRequest request) { - LOGGER.info("Fetching TxnStatusRequest by Id={} and ReqId ={}", request.getId(), - request.getReqId()); + LOGGER.info("Fetching TxnStatusRequest by Id={} and ReqId ={}", request.getId(), request.getReqId()); String apiName = "CheckTxnStatus"; String txnId = helper.generateTxnId(15); String reqId = request.getReqId(); @@ -574,16 +624,17 @@ public class ComplainServiceImpl implements ComplainService { Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), String.valueOf("")); } - TxnStatusResponse responseWrapper = objectMapper.convertValue(dataMap, - TxnStatusResponse.class); + TxnStatusResponse responseWrapper = objectMapper.convertValue(dataMap, TxnStatusResponse.class); GeneralResp generalResp = responseWrapper.getGeneralResp(); String status = generalResp.getStatus(); LOGGER.info("Current Complaint ReOpen Status: {}", status); helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); - //String saveComplaint = mapperHelper.saveComplainStatusDetail(responseWrapper, reqId, txnId); - //LOGGER.info("Complaint ReOpen data saved successfully for Count History: {}", saveComplaintHistory); + // String saveComplaint = mapperHelper.saveComplainStatusDetail(responseWrapper, + // reqId, txnId); + // LOGGER.info("Complaint ReOpen data saved successfully for Count History: {}", + // saveComplaintHistory); return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), Integer.parseInt(generalResp.getStatusCode()), responseWrapper); @@ -592,7 +643,7 @@ public class ComplainServiceImpl implements ComplainService { helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); throw new CustomException("Invalid JSON received from API"); } - + } }