From c9dfb6f9ba018a751449a13530201270e58d3d48 Mon Sep 17 00:00:00 2001 From: Lincpay Tech Date: Mon, 24 Nov 2025 16:34:55 +0530 Subject: [PATCH] moved some mapper code from helper to billerMapper --- .../bbps/serviceImpl/AgentServiceImpl.java | 15 +- .../serviceImpl/MasterDataServiceImpl.java | 2 +- .../bbps/serviceImpl/PaymentServiceImpl.java | 9 +- .../bbps/util/BillerMapperHelper.java | 232 +++++++++++++++++- .../billpaymentservice/bbps/util/Helper.java | 206 +--------------- 5 files changed, 247 insertions(+), 217 deletions(-) diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java index 9e4f45e..29bab13 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java @@ -3,7 +3,6 @@ package com.billpaymentservice.bbps.serviceImpl; import java.util.Map; import java.util.Optional; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -88,7 +87,7 @@ public class AgentServiceImpl implements AgentService { fetchBillRequest.setClientReqId(txnId); helper.validateMerchant(fetchBillRequest.getMid()); - FetchBillForwardRequest forwardReq = helper.fetchBillForwardRequestMap(fetchBillRequest); + FetchBillForwardRequest forwardReq = mapperHelper.fetchBillForwardRequestMap(fetchBillRequest); String forwardJson = helper.convertObjectToJson(forwardReq); String requestJson = helper.convertObjectToJson(fetchBillRequest); @@ -127,7 +126,7 @@ public class AgentServiceImpl implements AgentService { FetchBillResponse fetchBillResponse = objectMapper.convertValue(dataMap, FetchBillResponse.class); GeneralResp generalResponse = fetchBillResponse.getGenericResponse(); - helper.updateInboundLogSuccess(inboundLog, responseData, generalResponse.getStatus()); + helper.updateInboundLogSuccess(inboundLog, responseData, generalResponse.getStatus()); BillInitiate billInitiate = new BillInitiate(); billInitiate.setBillId((String) dataMap.get("billId")); @@ -196,7 +195,7 @@ public class AgentServiceImpl implements AgentService { LOGGER.info("Current Bill Status: {}", status); helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); - helper.saveOrUpdateBillData(responseWrapper, billFetchByBillIdRequest, txnId); + mapperHelper.saveOrUpdateBillData(responseWrapper, billFetchByBillIdRequest, txnId); LOGGER.info("Bill data saved successfully for billId: {}", billId); return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), @@ -252,7 +251,7 @@ public class AgentServiceImpl implements AgentService { Integer.parseInt(generalResp.getStatusCode()), responseWrapper); helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); - helper.saveOrUpdateBillData(responseWrapper, billFetchByBillIdRequest, txnId); + mapperHelper.saveOrUpdateBillData(responseWrapper, billFetchByBillIdRequest, txnId); LOGGER.info("Bill data saved successfully for billId={} | Status={}", billId, generalResp.getStatus()); return responseModel; @@ -276,7 +275,7 @@ public class AgentServiceImpl implements AgentService { fetchBillValidateRequest.setClientReqId(txnId); helper.validateMerchant(fetchBillValidateRequest.getMid()); - FetchBillValidatestForwardRequest forwardReq = helper + FetchBillValidatestForwardRequest forwardReq = mapperHelper .fetchBillValidatestForwardRequest(fetchBillValidateRequest); String forwardJson = helper.convertObjectToJson(forwardReq); @@ -388,7 +387,7 @@ public class AgentServiceImpl implements AgentService { helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); System.out.println("responseWrapper:" + responseWrapper); - helper.saveBillValidation(responseWrapper, billRequest); + mapperHelper.saveBillValidation(responseWrapper, billRequest); LOGGER.info("Bill data saved successfully for billId: {}", billId); return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), @@ -441,7 +440,7 @@ public class AgentServiceImpl implements AgentService { GeneralResp generalResp = responseWrapper.getGenericResponse(); helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); - helper.saveBillValidation(responseWrapper, billRequest); + mapperHelper.saveBillValidation(responseWrapper, billRequest); LOGGER.info("Bill validation saved successfully for billId: {}", billId); return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), Integer.parseInt(generalResp.getStatusCode()), responseWrapper); diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java index e044769..dc84b78 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java @@ -200,7 +200,7 @@ public class MasterDataServiceImpl implements MasterDataService { mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); BillerDetails entity = mapper.map(responseWrapper.getBillerDAO(), BillerDetails.class); EntityRelationshipUtil.linkBillerRelationships(entity);// linking nesting entity foreign key - helper.saveOrUpdateBillerData(entity); + mapperHelper.saveOrUpdateBillerData(entity); ResponseModel responseModel = new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), Integer.parseInt(generalResp.getStatusCode()), responseWrapper); diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java index 7d74dc0..d54bb22 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java @@ -37,6 +37,7 @@ import com.billpaymentservice.bbps.repository.PaymentRepository; import com.billpaymentservice.bbps.repository.TransactionMasterRepository; import com.billpaymentservice.bbps.service.PaymentService; import com.billpaymentservice.bbps.util.BBPSConstant; +import com.billpaymentservice.bbps.util.BillerMapperHelper; import com.billpaymentservice.bbps.util.EntityRelationshipUtil; import com.billpaymentservice.bbps.util.Helper; import com.fasterxml.jackson.annotation.JsonInclude; @@ -59,7 +60,7 @@ public class PaymentServiceImpl implements PaymentService { private final PaymentIntiateRepository paymentIntiateRepository; private final TransactionMasterRepository transactionMasterRepository; private final AgentFundTransferRepository agentFundTransferRepository; - + private final BillerMapperHelper mapperHelper; // Shared reusable instances private final ObjectMapper objectMapper; private final ModelMapper modelMapper; @@ -70,7 +71,8 @@ public class PaymentServiceImpl implements PaymentService { Helper helper, PaymentRepository paymentRepository, InboundTraceLogRepository inboundTraceLogRepository, OutboundTraceLogRepository outboundTraceLogRepository, PaymentIntiateRepository paymentIntiateRepository, TransactionMasterRepository transactionMasterRepository, - AgentFundTransferRepository agentFundTransferRepository) { + AgentFundTransferRepository agentFundTransferRepository, + BillerMapperHelper mapperHelper) { this.beneficiaryDetailsRepository = beneficiaryDetailsRepository; this.httpService = httpService; this.helper = helper; @@ -80,6 +82,7 @@ public class PaymentServiceImpl implements PaymentService { this.paymentIntiateRepository = paymentIntiateRepository; this.transactionMasterRepository = transactionMasterRepository; this.agentFundTransferRepository = agentFundTransferRepository; + this.mapperHelper = mapperHelper; this.objectMapper = new ObjectMapper(); this.objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); @@ -100,7 +103,7 @@ public class PaymentServiceImpl implements PaymentService { BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); HttpHeaders headers = helper.buildHeaders(headersData); - BillPaymentForwardRequest forwardReq = helper.billPaymentForwardRequest(billPaymentRequest); + BillPaymentForwardRequest forwardReq = mapperHelper.billPaymentForwardRequest(billPaymentRequest); String forwardjson = helper.convertObjectToJson(forwardReq); String requestJson = helper.convertObjectToJson(billPaymentRequest); diff --git a/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java b/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java index 903f2c6..9a63f65 100644 --- a/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java +++ b/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java @@ -6,6 +6,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import org.modelmapper.ModelMapper; @@ -14,6 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import com.billpaymentservice.bbps.dto.AdditionalInfoBillDTO; import com.billpaymentservice.bbps.dto.AmountOptionDTO; import com.billpaymentservice.bbps.dto.BillAdditionalInfoDTO; import com.billpaymentservice.bbps.dto.BillCustomerParamsDTO; @@ -21,6 +23,7 @@ import com.billpaymentservice.bbps.dto.BillerIconDTO; import com.billpaymentservice.bbps.dto.CheckClientBillerResponseDTO; import com.billpaymentservice.bbps.dto.ComplaintHistoryDTO; import com.billpaymentservice.bbps.dto.ContactMaster; +import com.billpaymentservice.bbps.dto.CustomerParamDAO; import com.billpaymentservice.bbps.dto.CustomerParamGroupsDTO; import com.billpaymentservice.bbps.dto.Detail; import com.billpaymentservice.bbps.dto.GroupDTO; @@ -28,22 +31,37 @@ import com.billpaymentservice.bbps.dto.MasterCategoryBillerResponse; import com.billpaymentservice.bbps.dto.PlanDTO; import com.billpaymentservice.bbps.dto.TicketDetailsDTO; import com.billpaymentservice.bbps.dto.TicketDispositionsDTO; +import com.billpaymentservice.bbps.dto.request.BillFetchByBillIdRequest; +import com.billpaymentservice.bbps.dto.request.BillPaymentRequest; +import com.billpaymentservice.bbps.dto.request.FetchBillRequest; +import com.billpaymentservice.bbps.dto.request.FetchBillValidatestRequest; import com.billpaymentservice.bbps.dto.response.AmountOptionsResponse; +import com.billpaymentservice.bbps.dto.response.BillDataResponse; import com.billpaymentservice.bbps.dto.response.ClientReqIdResponse; import com.billpaymentservice.bbps.dto.response.ComplaintHistoryStatusResponse; +import com.billpaymentservice.bbps.dto.response.FetchBillValidateResponse; import com.billpaymentservice.bbps.dto.response.PlanResponse; import com.billpaymentservice.bbps.dto.response.TicketCheckStatusResponse; import com.billpaymentservice.bbps.dto.response.ViewAllComplaintsResponse; import com.billpaymentservice.bbps.dto.response.ViewAllComplaintsTicketsResponse; import com.billpaymentservice.bbps.dto.response.ViewComplainByIdResponse; +import com.billpaymentservice.bbps.dto.sentRequest.BillPaymentForwardRequest; +import com.billpaymentservice.bbps.dto.sentRequest.FetchBillForwardRequest; +import com.billpaymentservice.bbps.dto.sentRequest.FetchBillValidatestForwardRequest; +import com.billpaymentservice.bbps.entites.AdditionalInfoBill; +import com.billpaymentservice.bbps.entites.AdditionalInfoBillValidate; import com.billpaymentservice.bbps.entites.AdditionalInfoPlans; import com.billpaymentservice.bbps.entites.AmountOptionByBillerId; import com.billpaymentservice.bbps.entites.AmountOptionDetails; import com.billpaymentservice.bbps.entites.BillAdditionalInfo; import com.billpaymentservice.bbps.entites.BillCustomerParams; +import com.billpaymentservice.bbps.entites.BillMaster; import com.billpaymentservice.bbps.entites.BillTag; +import com.billpaymentservice.bbps.entites.BillValidation; import com.billpaymentservice.bbps.entites.BillerCategoryIcon; import com.billpaymentservice.bbps.entites.BillerCategoryWise; +import com.billpaymentservice.bbps.entites.BillerDetails; +import com.billpaymentservice.bbps.entites.BillerResponse; import com.billpaymentservice.bbps.entites.CategoryResponseList; import com.billpaymentservice.bbps.entites.CheckClientBillerData; import com.billpaymentservice.bbps.entites.CheckClientStatusReqId; @@ -51,6 +69,8 @@ import com.billpaymentservice.bbps.entites.ComplainStatus; import com.billpaymentservice.bbps.entites.ComplaintHistory; import com.billpaymentservice.bbps.entites.ComplaintStatusDetails; import com.billpaymentservice.bbps.entites.ContactMasterData; +import com.billpaymentservice.bbps.entites.CustomerParamBill; +import com.billpaymentservice.bbps.entites.CustomerParamBillValidation; import com.billpaymentservice.bbps.entites.CustomerParamGroupById; import com.billpaymentservice.bbps.entites.GroupParam; import com.billpaymentservice.bbps.entites.Plan; @@ -61,7 +81,11 @@ import com.billpaymentservice.bbps.entites.TicketDispositionDetails; import com.billpaymentservice.bbps.entites.ViewAllComplaintTicketStatusDetails; import com.billpaymentservice.bbps.exception.CustomException; import com.billpaymentservice.bbps.repository.AmountOptionByBillerIdRepository; +import com.billpaymentservice.bbps.repository.BBPSMasterDataRepo; +import com.billpaymentservice.bbps.repository.BillMasterRepository; +import com.billpaymentservice.bbps.repository.BillValidationRepository; import com.billpaymentservice.bbps.repository.BillerCategoryWiseRepository; +import com.billpaymentservice.bbps.repository.BillerDataRepository; import com.billpaymentservice.bbps.repository.CategoryResponseListRepository; import com.billpaymentservice.bbps.repository.CheckClientBillerDataRepository; import com.billpaymentservice.bbps.repository.ClientReqIdRepository; @@ -96,6 +120,10 @@ public class BillerMapperHelper { private final CheckClientBillerDataRepository checkClientBillerDataRepository; private final ViewAllComplainTicketDetailRepository viewAllComplainTicketDetailRepository; private final ContactMasterDataRepository contactMasterDataRepository; + private final BBPSMasterDataRepo bbpsMasterDataRepo; + private final BillerDataRepository billerDataRespository; + private final BillMasterRepository billMasterRepository; + private final BillValidationRepository billValidationRepository; public BillerMapperHelper(BillerCategoryWiseRepository billerRepo, CustomerParamGroupByBillerIdRepository customerParamGroupByBillerIdRepo, @@ -109,7 +137,11 @@ public class BillerMapperHelper { CheckClientBillerDataRepository checkClientBillerDataRepository, TicketDispositionRepository ticketDispositionRepository, ViewAllComplainTicketDetailRepository viewAllComplainTicketDetailRepository, - ContactMasterDataRepository contactMasterDataRepository) { + ContactMasterDataRepository contactMasterDataRepository, + BBPSMasterDataRepo bbpsMasterDataRepo, + BillerDataRepository billerDataRespository, + BillMasterRepository billMasterRepository, + BillValidationRepository billValidationRepository) { this.billerRepo = billerRepo; this.customerParamGroupByBillerIdRepo = customerParamGroupByBillerIdRepo; this.amountOptionByBillerIdRepository = amountOptionByBillerIdRepository; @@ -125,6 +157,10 @@ public class BillerMapperHelper { this.ticketDispositionRepository = ticketDispositionRepository; this.viewAllComplainTicketDetailRepository = viewAllComplainTicketDetailRepository; this.contactMasterDataRepository = contactMasterDataRepository; + this.bbpsMasterDataRepo = bbpsMasterDataRepo; + this.billerDataRespository = billerDataRespository; + this.billMasterRepository = billMasterRepository; + this.billValidationRepository = billValidationRepository; } /** @@ -822,4 +858,198 @@ public class BillerMapperHelper { return "Contact Master Saved Successfully"; } + public void saveOrUpdateBillerData(BillerDetails newEntity) { + + Optional existingOpt = billerDataRespository.findByBillerId(newEntity.getBillerId()); + + if (existingOpt.isPresent()) { + //logic to be written + } + else { + // brand new biller + billerDataRespository.save(newEntity); + } + } + +public void saveOrUpdateBillData(BillDataResponse responseWrapper, + BillFetchByBillIdRequest billFetchByBillIdRequest,String txnId) { + + +BillMaster billMaster = new BillMaster(); + +billMaster.setBillId(responseWrapper.getBillId()); +billMaster.setRefId(responseWrapper.getRefId()); +billMaster.setBillerId(responseWrapper.getBillerId()); +billMaster.setStatus(responseWrapper.getStatus()); +billMaster.setActionType(responseWrapper.getActionType()); +billMaster.setUserId(responseWrapper.getUserId()); +billMaster.setReqId(billFetchByBillIdRequest.getReqId()); +billMaster.setTxnId(txnId); + +// BILLER RESPONSE +BillerResponse billerResponse = new BillerResponse(); +if (responseWrapper.getBillerResponse() != null) { +billerResponse.setBillId(responseWrapper.getBillerResponse().getBillId()); +billerResponse.setAmount(responseWrapper.getBillerResponse().getAmount()); +billerResponse.setBillDate(responseWrapper.getBillerResponse().getBillDate()); +billerResponse.setBillNumber(responseWrapper.getBillerResponse().getBillNumber()); +billerResponse.setBillPeriod(responseWrapper.getBillerResponse().getBillPeriod()); +billerResponse.setCustConvFee(responseWrapper.getBillerResponse().getCustConvFee()); +billerResponse.setCouCustConvFee(responseWrapper.getBillerResponse().getCouCustConvFee()); +billerResponse.setDueDate(responseWrapper.getBillerResponse().getDueDate()); +billerResponse.setCustomerName(responseWrapper.getBillerResponse().getCustomerName()); +billerResponse.setAmountOption(responseWrapper.getBillerResponse().isAmountOption()); +billerResponse.setBillMaster(billMaster); +} +billMaster.setBillerResponse(billerResponse); + + + +// ADDITIONAL INFO +List additionalInfos = new ArrayList<>(); +if (responseWrapper.getAdditionalInfo() != null) { +for (AdditionalInfoBillDTO info : responseWrapper.getAdditionalInfo()) { +AdditionalInfoBill entity = new AdditionalInfoBill(); +entity.setName(info.getName()); +entity.setValue(info.getValue()); +entity.setBillMaster(billMaster); +additionalInfos.add(entity); +} +} +billMaster.setAdditionalInfo(additionalInfos); + + + +// CUSTOMER PARAMS +List customerParams = new ArrayList<>(); +if (responseWrapper.getCustomerParams() != null) { +for (CustomerParamDAO param : responseWrapper.getCustomerParams()) { +CustomerParamBill entity = new CustomerParamBill(); +entity.setName(param.getName()); +entity.setValue(param.getValue() == null ? "" : param.getValue()); +entity.setType(param.getType() == null ? "" : param.getType()); +entity.setBillMaster(billMaster); +customerParams.add(entity); +} +} +billMaster.setCustomerParams(customerParams); + + + +// DATES +billMaster.setCreationDate(responseWrapper.getCreationDate()); +billMaster.setModifiedDate(responseWrapper.getModifiedDate()); +billMaster.setCreatedEpochDate(responseWrapper.getCreatedEpochDate()); +billMaster.setModifiedEpochDate(responseWrapper.getModifiedEpochDate()); + + +billMasterRepository.save(billMaster); +} + + public void saveBillValidation(FetchBillValidateResponse responseWrapper, BillFetchByBillIdRequest billRequest) { + System.out.println("responseWrapper"); + ModelMapper modelMapper = new ModelMapper(); + + try { + LOGGER.info("Saving bill validation data for billId={}", responseWrapper.getBillId()); + + // ✅ Map the main object + BillValidation billEntity = modelMapper.map(responseWrapper, BillValidation.class); + // ✅ Manually handle only the nested relationship part + if (responseWrapper.getCustomerParams() != null) { + List customerParams = responseWrapper.getCustomerParams() + .stream() + .map(param -> { + CustomerParamBillValidation cp = modelMapper.map(param, CustomerParamBillValidation.class); + cp.setBill(billEntity); // maintain relation + return cp; + }) + .collect(Collectors.toList()); + billEntity.setCustomerParams(customerParams); + } + if (responseWrapper.getAdditionalInfo() != null) { + List additionalInfos = responseWrapper.getAdditionalInfo() + .stream() + .map(info -> { + AdditionalInfoBillValidate ai = modelMapper.map(info, AdditionalInfoBillValidate.class); + ai.setBill(billEntity); // maintain relation + return ai; + }) + .collect(Collectors.toList()); + billEntity.setAdditionalInfo(additionalInfos); + + } + // ✅ Save everything (cascade handles child) + + billValidationRepository.save(billEntity); + + LOGGER.info("Bill validation saved successfully for billId={}", billEntity.getBillId()); + } catch (Exception ex) { + LOGGER.error("Error saving BillValidation data: {}", ex.getMessage(), ex); + throw new RuntimeException("Failed to save bill validation data", ex); + } + + +} + + public FetchBillForwardRequest fetchBillForwardRequestMap(FetchBillRequest req) { + + FetchBillForwardRequest forward = new FetchBillForwardRequest(); + + forward.setBillerId(req.getBillerId()); + forward.setBillerName(req.getBillerName()); + forward.setBillerCategory(req.getBillerCategory()); + forward.setClientReqId(req.getClientReqId()); + forward.setMacAdress(req.getMacAdress()); + forward.setCustomerMobNo(req.getCustomerMobNo()); + forward.setRemitterName(req.getRemitterName()); + forward.setPaymentChannel(req.getPaymentChannel()); + forward.setDeviceBlockTags(req.getDeviceBlockTags()); + forward.setCustomerParamsRequest(req.getCustomerParamsRequest()); + forward.setRemitterIdentity(req.getRemitterIdentity()); + + return forward; + } + + public FetchBillValidatestForwardRequest fetchBillValidatestForwardRequest(FetchBillValidatestRequest req) { + + FetchBillValidatestForwardRequest forward = new FetchBillValidatestForwardRequest(); + + forward.setBillerId(req.getBillerId()); + forward.setBillerName(req.getBillerName()); + forward.setBillerCategory(req.getBillerCategory()); + forward.setCustomerMobNo(req.getCustomerMobNo()); + forward.setClientReqId(req.getClientReqId()); + forward.setMacAddress(req.getMacAddress()); + forward.setCustomerParamsRequest(req.getCustomerParamsRequest()); + + return forward; + } + public BillPaymentForwardRequest billPaymentForwardRequest(BillPaymentRequest req) { + + BillPaymentForwardRequest forward = new BillPaymentForwardRequest(); + + forward.setTenantId(req.getTenantId()); + forward.setRefId(req.getRefId()); + forward.setBillId(req.getBillId()); + forward.setAmountOptions(req.isAmountOptions()); + forward.setPaymentMode(req.getPaymentMode()); + forward.setPaymentInformation(req.getPaymentInformation()); + forward.setBillerId(req.getBillerId()); + forward.setBillerName(req.getBillerName()); + forward.setBillerCategory(req.getBillerCategory()); + forward.setMacAdress(req.getMacAdress()); + forward.setCustomerMobNo(req.getCustomerMobNo()); + forward.setTxnAmount(req.getTxnAmount()); + forward.setPaymentRefId(req.getPaymentRefId()); + forward.setClientReqId(req.getClientReqId()); + forward.setPaymentChannel(req.getPaymentChannel()); + + forward.setDeviceBlockTags(req.getDeviceBlockTags()); + forward.setCustomerParamsRequest(req.getCustomerParamsRequest()); + forward.setRemitterIdentity(req.getRemitterIdentity()); + forward.setAmountBreakSet(req.getAmountBreakSet()); + + return forward; + } } diff --git a/src/main/java/com/billpaymentservice/bbps/util/Helper.java b/src/main/java/com/billpaymentservice/bbps/util/Helper.java index 405bde2..edda1a7 100644 --- a/src/main/java/com/billpaymentservice/bbps/util/Helper.java +++ b/src/main/java/com/billpaymentservice/bbps/util/Helper.java @@ -60,23 +60,16 @@ public class Helper { private static final String CHARACTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; private static final SecureRandom secureRandom = new SecureRandom(); private final ObjectMapper objectMapper = new ObjectMapper(); - private final BBPSMasterDataRepo bbpsMasterDataRepo; - private final BillerDataRepository billerDataRespository; - private final BillMasterRepository billMasterRepository; - private final BillValidationRepository billValidationRepository; + // Constructor Injection public Helper(BBPSMasterDataRepo bbpsMasterDataRepo, InboundTraceLogRepository inboundTraceLogRepository, OutboundTraceLogRepository outboundTraceLogRepository,BillerDataRepository billerDataRepository, BillMasterRepository billMasterRepository,BillValidationRepository billValidationRepository) { - this.bbpsMasterDataRepo = bbpsMasterDataRepo; this.inboundTraceLogRepository = inboundTraceLogRepository; this.outboundTraceLogRepository = outboundTraceLogRepository; - this.billerDataRespository=billerDataRepository; - this.billMasterRepository=billMasterRepository; - this.billValidationRepository=billValidationRepository; - } + this.bbpsMasterDataRepo = bbpsMasterDataRepo;} /** * Validates whether the merchant exists and is active. @@ -88,7 +81,6 @@ public class Helper { * * */ - public void startPolling(T requestObject, // Request object (any type) Function apiCallFunction, // Function to call API int intervalSeconds, // gap between two polls @@ -230,198 +222,4 @@ public class Helper { return headers; } - public void saveOrUpdateBillerData(BillerDetails newEntity) { - - Optional existingOpt = billerDataRespository.findByBillerId(newEntity.getBillerId()); - - if (existingOpt.isPresent()) { - //logic to be written - } - else { - // brand new biller - billerDataRespository.save(newEntity); - } - } - -public void saveOrUpdateBillData(BillDataResponse responseWrapper, - BillFetchByBillIdRequest billFetchByBillIdRequest,String txnId) { - - -BillMaster billMaster = new BillMaster(); - -billMaster.setBillId(responseWrapper.getBillId()); -billMaster.setRefId(responseWrapper.getRefId()); -billMaster.setBillerId(responseWrapper.getBillerId()); -billMaster.setStatus(responseWrapper.getStatus()); -billMaster.setActionType(responseWrapper.getActionType()); -billMaster.setUserId(responseWrapper.getUserId()); -billMaster.setReqId(billFetchByBillIdRequest.getReqId()); -billMaster.setTxnId(txnId); - -// BILLER RESPONSE -BillerResponse billerResponse = new BillerResponse(); -if (responseWrapper.getBillerResponse() != null) { -billerResponse.setBillId(responseWrapper.getBillerResponse().getBillId()); -billerResponse.setAmount(responseWrapper.getBillerResponse().getAmount()); -billerResponse.setBillDate(responseWrapper.getBillerResponse().getBillDate()); -billerResponse.setBillNumber(responseWrapper.getBillerResponse().getBillNumber()); -billerResponse.setBillPeriod(responseWrapper.getBillerResponse().getBillPeriod()); -billerResponse.setCustConvFee(responseWrapper.getBillerResponse().getCustConvFee()); -billerResponse.setCouCustConvFee(responseWrapper.getBillerResponse().getCouCustConvFee()); -billerResponse.setDueDate(responseWrapper.getBillerResponse().getDueDate()); -billerResponse.setCustomerName(responseWrapper.getBillerResponse().getCustomerName()); -billerResponse.setAmountOption(responseWrapper.getBillerResponse().isAmountOption()); -billerResponse.setBillMaster(billMaster); -} -billMaster.setBillerResponse(billerResponse); - - - -// ADDITIONAL INFO -List additionalInfos = new ArrayList<>(); -if (responseWrapper.getAdditionalInfo() != null) { -for (AdditionalInfoBillDTO info : responseWrapper.getAdditionalInfo()) { -AdditionalInfoBill entity = new AdditionalInfoBill(); -entity.setName(info.getName()); -entity.setValue(info.getValue()); -entity.setBillMaster(billMaster); -additionalInfos.add(entity); -} -} -billMaster.setAdditionalInfo(additionalInfos); - - - -// CUSTOMER PARAMS -List customerParams = new ArrayList<>(); -if (responseWrapper.getCustomerParams() != null) { -for (CustomerParamDAO param : responseWrapper.getCustomerParams()) { -CustomerParamBill entity = new CustomerParamBill(); -entity.setName(param.getName()); -entity.setValue(param.getValue() == null ? "" : param.getValue()); -entity.setType(param.getType() == null ? "" : param.getType()); -entity.setBillMaster(billMaster); -customerParams.add(entity); -} -} -billMaster.setCustomerParams(customerParams); - - - -// DATES -billMaster.setCreationDate(responseWrapper.getCreationDate()); -billMaster.setModifiedDate(responseWrapper.getModifiedDate()); -billMaster.setCreatedEpochDate(responseWrapper.getCreatedEpochDate()); -billMaster.setModifiedEpochDate(responseWrapper.getModifiedEpochDate()); - - -billMasterRepository.save(billMaster); -} - - public void saveBillValidation(FetchBillValidateResponse responseWrapper, BillFetchByBillIdRequest billRequest) { - System.out.println("responseWrapper"); - ModelMapper modelMapper = new ModelMapper(); - - try { - LOGGER.info("Saving bill validation data for billId={}", responseWrapper.getBillId()); - - // ✅ Map the main object - BillValidation billEntity = modelMapper.map(responseWrapper, BillValidation.class); - // ✅ Manually handle only the nested relationship part - if (responseWrapper.getCustomerParams() != null) { - List customerParams = responseWrapper.getCustomerParams() - .stream() - .map(param -> { - CustomerParamBillValidation cp = modelMapper.map(param, CustomerParamBillValidation.class); - cp.setBill(billEntity); // maintain relation - return cp; - }) - .collect(Collectors.toList()); - billEntity.setCustomerParams(customerParams); - } - if (responseWrapper.getAdditionalInfo() != null) { - List additionalInfos = responseWrapper.getAdditionalInfo() - .stream() - .map(info -> { - AdditionalInfoBillValidate ai = modelMapper.map(info, AdditionalInfoBillValidate.class); - ai.setBill(billEntity); // maintain relation - return ai; - }) - .collect(Collectors.toList()); - billEntity.setAdditionalInfo(additionalInfos); - - } - // ✅ Save everything (cascade handles child) - - billValidationRepository.save(billEntity); - - LOGGER.info("Bill validation saved successfully for billId={}", billEntity.getBillId()); - } catch (Exception ex) { - LOGGER.error("Error saving BillValidation data: {}", ex.getMessage(), ex); - throw new RuntimeException("Failed to save bill validation data", ex); - } - - -} - - public FetchBillForwardRequest fetchBillForwardRequestMap(FetchBillRequest req) { - - FetchBillForwardRequest forward = new FetchBillForwardRequest(); - - forward.setBillerId(req.getBillerId()); - forward.setBillerName(req.getBillerName()); - forward.setBillerCategory(req.getBillerCategory()); - forward.setClientReqId(req.getClientReqId()); - forward.setMacAdress(req.getMacAdress()); - forward.setCustomerMobNo(req.getCustomerMobNo()); - forward.setRemitterName(req.getRemitterName()); - forward.setPaymentChannel(req.getPaymentChannel()); - forward.setDeviceBlockTags(req.getDeviceBlockTags()); - forward.setCustomerParamsRequest(req.getCustomerParamsRequest()); - forward.setRemitterIdentity(req.getRemitterIdentity()); - - return forward; - } - - public FetchBillValidatestForwardRequest fetchBillValidatestForwardRequest(FetchBillValidatestRequest req) { - - FetchBillValidatestForwardRequest forward = new FetchBillValidatestForwardRequest(); - - forward.setBillerId(req.getBillerId()); - forward.setBillerName(req.getBillerName()); - forward.setBillerCategory(req.getBillerCategory()); - forward.setCustomerMobNo(req.getCustomerMobNo()); - forward.setClientReqId(req.getClientReqId()); - forward.setMacAddress(req.getMacAddress()); - forward.setCustomerParamsRequest(req.getCustomerParamsRequest()); - - return forward; - } - public BillPaymentForwardRequest billPaymentForwardRequest(BillPaymentRequest req) { - - BillPaymentForwardRequest forward = new BillPaymentForwardRequest(); - - forward.setTenantId(req.getTenantId()); - forward.setRefId(req.getRefId()); - forward.setBillId(req.getBillId()); - forward.setAmountOptions(req.isAmountOptions()); - forward.setPaymentMode(req.getPaymentMode()); - forward.setPaymentInformation(req.getPaymentInformation()); - forward.setBillerId(req.getBillerId()); - forward.setBillerName(req.getBillerName()); - forward.setBillerCategory(req.getBillerCategory()); - forward.setMacAdress(req.getMacAdress()); - forward.setCustomerMobNo(req.getCustomerMobNo()); - forward.setTxnAmount(req.getTxnAmount()); - forward.setPaymentRefId(req.getPaymentRefId()); - forward.setClientReqId(req.getClientReqId()); - forward.setPaymentChannel(req.getPaymentChannel()); - - forward.setDeviceBlockTags(req.getDeviceBlockTags()); - forward.setCustomerParamsRequest(req.getCustomerParamsRequest()); - forward.setRemitterIdentity(req.getRemitterIdentity()); - forward.setAmountBreakSet(req.getAmountBreakSet()); - - return forward; - } } \ No newline at end of file