@ -4,7 +4,9 @@ import com.mfsys.comm.util.FunctionReturnDetail;
import com.mfsys.uco.UCOURI ;
import com.mfsys.uco.UCOURI ;
import com.mfsys.uco.dto.* ;
import com.mfsys.uco.dto.* ;
import com.mfsys.uco.dto.Transaction.TransactionOtpRequestModel ;
import com.mfsys.uco.dto.Transaction.TransactionOtpRequestModel ;
import com.mfsys.uco.exception.SameCrDrAccountExistsException ;
import com.mfsys.uco.model.CustomerProfile ;
import com.mfsys.uco.model.CustomerProfile ;
import com.mfsys.uco.model.CustomerProfileId ;
import com.mfsys.uco.model.TransactionTrail ;
import com.mfsys.uco.model.TransactionTrail ;
import com.mfsys.uco.repository.CustomerProfileRepository ;
import com.mfsys.uco.repository.CustomerProfileRepository ;
import com.mfsys.uco.repository.TransactionTrailRepository ;
import com.mfsys.uco.repository.TransactionTrailRepository ;
@ -14,9 +16,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal ;
import java.math.BigDecimal ;
import java.time.LocalDate ;
import java.time.LocalDate ;
import java.util.Collections ;
import java.util.* ;
import java.util.List ;
import java.util.Optional ;
@Service
@Service
@Data
@Data
@ -36,7 +36,8 @@ public class TransactionService {
transactionOtpRequestModel . getPinType ( ) , "Transaction Verification OTP" , transactionOtpRequestModel . isOtpRequired ( ) ) ) . build ( ) ;
transactionOtpRequestModel . getPinType ( ) , "Transaction Verification OTP" , transactionOtpRequestModel . isOtpRequired ( ) ) ) . build ( ) ;
}
}
public FunctionReturnDetail < String > cashInTransaction ( CashInTransactionRequest transactionRequest ) {
public Map < String , Object > cashInTransaction ( CashInTransactionRequest transactionRequest ) {
validation ( transactionRequest ) ;
TransactionTrail transactionTrail = TransactionTrail . builder ( )
TransactionTrail transactionTrail = TransactionTrail . builder ( )
. porOrgacode ( transactionRequest . getPorOrgacode ( ) )
. porOrgacode ( transactionRequest . getPorOrgacode ( ) )
. drMbmBkmsnumber ( transactionRequest . getDrMbmBkmsnumber ( ) )
. drMbmBkmsnumber ( transactionRequest . getDrMbmBkmsnumber ( ) )
@ -65,36 +66,52 @@ public class TransactionService {
. otdTrancomment ( transactionRequest . getOtdTrancomment ( ) )
. otdTrancomment ( transactionRequest . getOtdTrancomment ( ) )
. porOrgacode ( transactionRequest . getPorOrgacode ( ) )
. porOrgacode ( transactionRequest . getPorOrgacode ( ) )
. build ( ) ;
. build ( ) ;
FunctionReturnDetail < String > response = ( FunctionReturnDetail < String > ) webClientDepositService . postTransaction ( coreCashInTransaction , UCOURI . BANKING_CASH_IN , transactionRequest . getPorOrgacode ( ) ) ;
Map < String , Object > response = ( Map < String , Object > ) webClientDepositService . postTransaction ( coreCashInTransaction , UCOURI . BANKING_CASH_IN , transactionRequest . getPorOrgacode ( ) ) ;
transactionTrail . setSgtSentGntrnumber ( extractTranNumber ( response ) ) ;
if ( response . containsKey ( "mbmBkmsBalance" ) ) {
transactionTrail . setBatAcnttranSend ( true ) ;
Map < String , Object > transactionId = ( Map < String , Object > ) response . get ( "FuncReturnDetail" ) ;
transactionTrailRepository . save ( transactionTrail ) ;
transactionTrail . setSgtSentGntrnumber ( extractTranNumber ( List . of ( transactionId . get ( "arguments" ) ) ) ) ;
transactionTrail . setBatAcnttranSend ( true ) ;
transactionTrailRepository . save ( transactionTrail ) ;
return response ;
}
return response ;
return response ;
}
}
private void validation ( CashInTransactionRequest transactionRequest ) {
if ( transactionRequest . getCrMbmBkmsnumber ( ) . equals ( transactionRequest . getDrMbmBkmsnumber ( ) ) ) {
throw new SameCrDrAccountExistsException ( ) ;
}
notificationService . verifyOtpViaOtpId ( transactionRequest . getNotificationId ( ) , transactionRequest . getPinType ( ) , transactionRequest . getObpPincode ( ) ) ;
}
public List < TransactionTrail > fetchPendingCrTransactions ( String porOrgacode , String mbmBkmsnumber ) {
public List < TransactionTrail > fetchPendingCrTransactions ( String porOrgacode , String mbmBkmsnumber ) {
Optional < List < TransactionTrail > > optionalTransactions = transactionTrailRepository . findByPorOrgacodeAndCrMbmBkmsnumberAndBatAcnttranReceivedFalse ( porOrgacode , mbmBkmsnumber ) ;
Optional < List < TransactionTrail > > optionalTransactions = transactionTrailRepository . findByPorOrgacodeAndCrMbmBkmsnumberAndBatAcnttranReceivedFalse ( porOrgacode , mbmBkmsnumber ) ;
return optionalTransactions . orElseGet ( Collections : : emptyList ) ;
return optionalTransactions . orElseGet ( Collections : : emptyList ) ;
}
}
public void cashOutTransaction ( CashOutTransactionRequest cashOutTransactionRequest ) {
public Map < String , Object > cashOutTransaction ( CashOutTransactionRequest cashOutTransactionRequest ) {
verifyOldPinAndGetCmpProfile ( cashOutTransactionRequest . getPorOrgacode ( ) ,
verifyOldPinAndGetCmpProfile ( cashOutTransactionRequest . getPorOrgacode ( ) ,
cashOutTransactionRequest . getCmpTranpin ( ) , cashOutTransactionRequest . getCmpCustcode ( ) ) ;
cashOutTransactionRequest . getCmpTranpin ( ) , cashOutTransactionRequest . getCmpCustcode ( ) ) ;
Map < String , Object > response = new HashMap < > ( ) ;
Optional < TransactionTrail > transactionTrail = transactionTrailRepository . findById ( Math . toIntExact ( cashOutTransactionRequest . getId ( ) ) ) ;
Optional < TransactionTrail > transactionTrail = transactionTrailRepository . findById ( Math . toIntExact ( cashOutTransactionRequest . getId ( ) ) ) ;
transactionTrail . ifPresent ( tran - > {
if ( transactionTrail . isPresent ( ) ) {
CoreCashOutTransaction cashOutTransaction = CoreCashOutTransaction . builder ( )
CoreCashOutTransaction cashOutTransaction = CoreCashOutTransaction . builder ( )
. crPcrCurrcode ( "123" )
. crPcrCurrcode ( "123" )
. crMbmBkmsnumber ( tran . getCrMbmBkmsnumber ( ) )
. crMbmBkmsnumber ( tran sactionTrail. get ( ) . getCrMbmBkmsnumber ( ) )
. porOrgacode ( cashOutTransactionRequest . getPorOrgacode ( ) )
. porOrgacode ( cashOutTransactionRequest . getPorOrgacode ( ) )
. otdTrancomment ( cashOutTransactionRequest . getId ( ) + "_Received" )
. otdTrancomment ( cashOutTransactionRequest . getId ( ) + "_Received" )
. sgtGntramtfc ( tran . getSgtGntramt ( ) )
. sgtGntramtfc ( tran sactionTrail. get ( ) . getSgtGntramt ( ) )
. build ( ) ;
. build ( ) ;
FunctionReturnDetail < String > response = webClientDepositService . postTransaction ( cashOutTransaction , UCOURI . BANKING_CASH_OUT , tran . getPorOrgacode ( ) ) ;
response = ( Map < String , Object > ) webClientDepositService . postTransaction ( cashOutTransaction , UCOURI . BANKING_CASH_OUT , transactionTrail . get ( ) . getPorOrgacode ( ) ) ;
tran . setSgtReceiveGntrnumber ( extractTranNumber ( response ) ) ;
if ( response . containsKey ( "mbmBkmsBalance" ) ) {
tran . setBatAcnttranReceived ( true ) ;
Map < String , Object > transactionId = ( Map < String , Object > ) response . get ( "FuncReturnDetail" ) ;
transactionTrailRepository . save ( tran ) ;
transactionTrail . get ( ) . setSgtReceiveGntrnumber ( extractTranNumber ( List . of ( transactionId . get ( "arguments" ) ) ) ) ;
} ) ;
transactionTrail . get ( ) . setBatAcnttranReceived ( true ) ;
transactionTrailRepository . save ( transactionTrail . get ( ) ) ;
}
}
return response ;
}
}
private CustomerProfile verifyOldPinAndGetCmpProfile ( String porOrgacode , String transPincode , String cmpCustcode ) {
private CustomerProfile verifyOldPinAndGetCmpProfile ( String porOrgacode , String transPincode , String cmpCustcode ) {
@ -104,10 +121,15 @@ public class TransactionService {
return customerProfile ;
return customerProfile ;
}
}
private String extractTranNumber ( FunctionReturnDetail < String > response ) {
private CustomerProfile fetchCustomerBasedOnCmpCustcode ( String porOrgacode , String cmpCustcode ) {
Object [ ] args = response . getArguments ( ) ;
return customerProfileRepository . findById ( new CustomerProfileId ( porOrgacode , cmpCustcode ) )
if ( args ! = null & & args . length > 0 & & args [ 0 ] instanceof String ) {
. orElseThrow ( ( ) - > new IllegalArgumentException ( "Customer profile not found for ID: " + cmpCustcode ) ) ;
return ( String ) args [ 0 ] ;
}
private String extractTranNumber ( List < Object > args ) {
if ( args ! = null & & args . size ( ) > 0 ) {
return String . valueOf ( args . get ( 0 ) ) . replace ( "[" , "" ) . replace ( "]" , "" ) ;
}
}
throw new RuntimeException ( "may day" ) ;
throw new RuntimeException ( "may day" ) ;
}
}