|
|
|
@@ -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<String, String> 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<String, Object> 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<String, Object> dataMap = objectMapper.readValue(responseData,
|
|
|
|
|
// new TypeReference<Map<String, Object>>() {
|
|
|
|
|
// });
|
|
|
|
|
//
|
|
|
|
|
// 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<String, String> responseMap = httpService.postRequest(fullUrl, requestJson, headers);
|
|
|
|
|
String responseData = responseMap.get("data");
|
|
|
|
|
LOGGER.info("Complaint FetchById Response: {}", responseData);
|
|
|
|
|
Map<String, Object> 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<String, Object> 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<String, Object> dataMap = objectMapper.readValue(responseData,
|
|
|
|
|
new TypeReference<Map<String, Object>>() {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
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<String, String> 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<String, String> 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<String, Object> dummyComplaint = mapperHelper.getDummyReopenComplaintJson();
|
|
|
|
|
LOGGER.info("Returning Dummy Response: {}", dummyComplaint);
|
|
|
|
|
|
|
|
|
|
Map<String, Object> 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<String, Object> dataMap = objectMapper.readValue(responseData,
|
|
|
|
|
new TypeReference<Map<String, Object>>() {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
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<String, Object> dataMap = objectMapper.readValue(responseData,
|
|
|
|
|
// new TypeReference<Map<String, Object>>() {
|
|
|
|
|
// });
|
|
|
|
|
//
|
|
|
|
|
// 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<String, String> 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<String, String> 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<String, Object> 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<String, Object> 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<String, Object> dataMap = objectMapper.readValue(responseData,
|
|
|
|
|
new TypeReference<Map<String, Object>>() {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
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<String, Object> dataMap = objectMapper.readValue(responseData,
|
|
|
|
|
// new TypeReference<Map<String, Object>>() {
|
|
|
|
|
// });
|
|
|
|
|
//
|
|
|
|
|
// 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<ComplaintStatusOptionsMaster> 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");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|