diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoginController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/AuthController.java similarity index 86% rename from aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoginController.java rename to aconnect/src/main/java/com/mfsys/aconnect/client/controller/AuthController.java index ffbf6c7..11932f5 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoginController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/AuthController.java @@ -1,7 +1,7 @@ package com.mfsys.aconnect.client.controller; import com.mfsys.aconnect.client.dto.SigninRequest; -import com.mfsys.aconnect.client.service.LoginService; +import com.mfsys.aconnect.client.service.AuthService; import com.mfsys.common.configuration.constant.AconnectURI; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @@ -12,12 +12,12 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; @RestController -public class LoginController { +public class AuthController { - LoginService loginService; + AuthService loginService; @Autowired - public LoginController(LoginService loginService) { + public AuthController(AuthService loginService) { this.loginService = loginService; } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/CRMController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/CRMController.java new file mode 100644 index 0000000..28a03fc --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/CRMController.java @@ -0,0 +1,7 @@ +package com.mfsys.aconnect.client.controller; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class CRMController { +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/DepositAccountController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/DepositAccountController.java new file mode 100644 index 0000000..1b8cc4d --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/DepositAccountController.java @@ -0,0 +1,7 @@ +package com.mfsys.aconnect.client.controller; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class DepositAccountController { +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoanAccountController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoanAccountController.java new file mode 100644 index 0000000..1b2e27a --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoanAccountController.java @@ -0,0 +1,7 @@ +package com.mfsys.aconnect.client.controller; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class LoanAccountController { +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionAuthorizationController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionAuthorizationController.java new file mode 100644 index 0000000..5e0bebe --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionAuthorizationController.java @@ -0,0 +1,35 @@ +package com.mfsys.aconnect.client.controller; + +import com.mfsys.aconnect.client.dto.DepositAuthorizationRequest; +import com.mfsys.aconnect.client.dto.GLAuthorizationDTO; +import com.mfsys.aconnect.client.service.TransactionAuthorizationService; +import com.mfsys.common.configuration.constant.AconnectURI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class TransactionAuthorizationController { + + @Autowired + private TransactionAuthorizationService transactionAuthorizationService; + + @Autowired + public TransactionAuthorizationController(TransactionAuthorizationService transactionAuthorizationService) { + this.transactionAuthorizationService = transactionAuthorizationService; + } + + @PostMapping(AconnectURI.DEPOSIT_AUTHORIZATION_URI) + public Object depositAuthorizationTransaction(@RequestBody DepositAuthorizationRequest authorizationRequest, + @RequestHeader("Authorization") String token) { + return transactionAuthorizationService.processDepositAuthTransaction(authorizationRequest, token); + } + + @PostMapping(AconnectURI.GENERALLEDGER_AUTHORIZATION_URI) + public Object glAuthorizationTransaction(@RequestBody GLAuthorizationDTO glAuthorizationRequest, + @RequestHeader("Authorization") String token) { + return transactionAuthorizationService.processGLAuthTransaction(glAuthorizationRequest, token); + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionCancellationController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionCancellationController.java new file mode 100644 index 0000000..008ce36 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionCancellationController.java @@ -0,0 +1,36 @@ +package com.mfsys.aconnect.client.controller; + +import com.mfsys.aconnect.client.dto.DepositCancellationDTO; +import com.mfsys.aconnect.client.dto.GLCancellationDTO; +import com.mfsys.aconnect.client.service.CancellationTransactionService; +import com.mfsys.aconnect.client.service.TransactionService; +import com.mfsys.common.configuration.constant.AconnectURI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class TransactionCancellationController { + + @Autowired + private CancellationTransactionService cancellationTransactionService; + + @Autowired + public TransactionCancellationController(CancellationTransactionService cancellationTransactionService) { + this.cancellationTransactionService = cancellationTransactionService; + } + + @PostMapping(AconnectURI.DEPOSIT_CANCELLATION_URI) + public Object depositCancellationTransaction(@RequestBody DepositCancellationDTO depositCancellationDTO, + @RequestHeader("Authorization") String token) { + return cancellationTransactionService.processDepositCancellationTransaction(depositCancellationDTO, token); + } + + @PostMapping(AconnectURI.GENERALLEDGER_CANCELLATION_URI) + public Object glCancellationTransaction(@RequestBody GLCancellationDTO glCancellationRequest, + @RequestHeader("Authorization") String token) { + return cancellationTransactionService.processGLCancellationTransaction(glCancellationRequest, token); + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionController.java index 8be0864..9fc5d38 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionController.java @@ -1,6 +1,9 @@ package com.mfsys.aconnect.client.controller; -import com.mfsys.aconnect.client.dto.*; +import com.mfsys.aconnect.client.dto.AccountToAccountDTO; +import com.mfsys.aconnect.client.dto.AccountGLTransactionRequest; +import com.mfsys.aconnect.client.dto.GLtoGLRequest; +import com.mfsys.aconnect.client.dto.GlToAccountDTO; import com.mfsys.aconnect.client.service.TransactionService; import com.mfsys.common.configuration.constant.AconnectURI; import org.springframework.beans.factory.annotation.Autowired; @@ -45,52 +48,16 @@ public class TransactionController { return transactionService.processGLTransaction(request, token); } - @PostMapping(AconnectURI.DEPOSIT_AUTHORIZATION_URI) - public Object depositAuthorizationTransaction(@RequestBody DepositAuthorizationRequest authorizationRequest, - @RequestHeader("Authorization") String token) { - return transactionService.processDepositAuthTransaction(authorizationRequest, token); - } - - @PostMapping(AconnectURI.GENERALLEDGER_AUTHORIZATION_URI) - public Object glAuthorizationTransaction(@RequestBody GLAuthorizationDTO glAuthorizationRequest, - @RequestHeader("Authorization") String token) { - return transactionService.processGLAuthTransaction(glAuthorizationRequest, token); - } - - @PostMapping(AconnectURI.DEPOSIT_CANCELLATION_URI) - public Object depositCancellationTransaction(@RequestBody DepositCancellationDTO depositCancellationDTO, - @RequestHeader("Authorization") String token) { - return transactionService.processDepositCancellationTransaction(depositCancellationDTO, token); - } - - @PostMapping(AconnectURI.GENERALLEDGER_CANCELLATION_URI) - public Object glCancellationTransaction(@RequestBody GLCancellationDTO glCancellationRequest, - @RequestHeader("Authorization") String token) { - return transactionService.processGLCancellationTransaction(glCancellationRequest, token); - } - - @PostMapping(AconnectURI.DEPOSIT_TRANSACTION_REVERSAL_URI) - public Object depositReversalTransaction(@RequestBody DepositReversalDTO depositReversalDTO, - @RequestHeader("Authorization") String token) { - return transactionService.processDepositReversalTransaction(depositReversalDTO, token); - } - - @PostMapping(AconnectURI.GENERALLEDGER_TRANSACTION_REVERSAL_URI) - public Object glReversalTransaction(@RequestBody GLReversalDTO glReversalRequest, - @RequestHeader("Authorization") String token) { - return transactionService.processGLReversalTransaction(glReversalRequest, token); - } - - @PostMapping(AconnectURI.DEPOSIT_TRANSACTION_REJECT_URI) - public Object depositRejectionTransaction(@RequestBody DepositRejectDTO rejectRequest, - @RequestHeader("Authorization") String token) { - return transactionService.processDepositRejectionTransaction(rejectRequest, token); + @PostMapping(AconnectURI.ACCOUNT_TO_ACCOUNT_TRANSACTION_URI) + public Object accToAccTransaction(@RequestBody AccountToAccountDTO request, + @RequestHeader("Authorization") String token) { + return transactionService.processAccToAccTransaction(request, token); } - @PostMapping(AconnectURI.GENERALLEDGER_TRANSACTION_REJECT_URI) - public Object glRejectionTransaction(@RequestBody DepositRejectDTO rejectRequest, - @RequestHeader("Authorization") String token) { - return transactionService.processGLRejectionTransaction(rejectRequest, token); + @PostMapping(AconnectURI.GL_TO_ACCOUNT_TRANSACTION_URI) + public Object glToAccTransaction(@RequestBody GlToAccountDTO glToAccountDTO, + @RequestHeader("Authorization") String token) { + return transactionService.processGLtoAccTransaction(glToAccountDTO, token); } } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionRejectController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionRejectController.java new file mode 100644 index 0000000..29ef372 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionRejectController.java @@ -0,0 +1,35 @@ +package com.mfsys.aconnect.client.controller; + +import com.mfsys.aconnect.client.dto.DepositRejectDTO; +import com.mfsys.aconnect.client.service.RejectTransactionService; +import com.mfsys.aconnect.client.service.TransactionService; +import com.mfsys.common.configuration.constant.AconnectURI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class TransactionRejectController { + + @Autowired + private RejectTransactionService rejectTransactionService; + + @Autowired + public TransactionRejectController(RejectTransactionService rejectTransactionService) { + this.rejectTransactionService = rejectTransactionService; + } + + @PostMapping(AconnectURI.DEPOSIT_TRANSACTION_REJECT_URI) + public Object depositRejectionTransaction(@RequestBody DepositRejectDTO rejectRequest, + @RequestHeader("Authorization") String token) { + return rejectTransactionService.processDepositRejectionTransaction(rejectRequest, token); + } + + @PostMapping(AconnectURI.GENERALLEDGER_TRANSACTION_REJECT_URI) + public Object glRejectionTransaction(@RequestBody DepositRejectDTO rejectRequest, + @RequestHeader("Authorization") String token) { + return rejectTransactionService.processGLRejectionTransaction(rejectRequest, token); + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionReversalController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionReversalController.java new file mode 100644 index 0000000..7ffd8e2 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/TransactionReversalController.java @@ -0,0 +1,36 @@ +package com.mfsys.aconnect.client.controller; + +import com.mfsys.aconnect.client.dto.DepositReversalDTO; +import com.mfsys.aconnect.client.dto.GLReversalDTO; +import com.mfsys.aconnect.client.service.ReversalTransactionService; +import com.mfsys.aconnect.client.service.TransactionService; +import com.mfsys.common.configuration.constant.AconnectURI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class TransactionReversalController { + + @Autowired + private ReversalTransactionService reversalTransactionService; + + @Autowired + public TransactionReversalController(ReversalTransactionService reversalTransactionService) { + this.reversalTransactionService = reversalTransactionService; + } + + @PostMapping(AconnectURI.DEPOSIT_TRANSACTION_REVERSAL_URI) + public Object depositReversalTransaction(@RequestBody DepositReversalDTO depositReversalDTO, + @RequestHeader("Authorization") String token) { + return reversalTransactionService.processDepositReversalTransaction(depositReversalDTO, token); + } + + @PostMapping(AconnectURI.GENERALLEDGER_TRANSACTION_REVERSAL_URI) + public Object glReversalTransaction(@RequestBody GLReversalDTO glReversalRequest, + @RequestHeader("Authorization") String token) { + return reversalTransactionService.processGLReversalTransaction(glReversalRequest, token); + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/dto/AccountToAccountDTO.java b/aconnect/src/main/java/com/mfsys/aconnect/client/dto/AccountToAccountDTO.java new file mode 100644 index 0000000..d6049e9 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/dto/AccountToAccountDTO.java @@ -0,0 +1,41 @@ +package com.mfsys.aconnect.client.dto; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +public class AccountToAccountDTO { + + private AdditionalInfo additionalInfo; + + private AccountTranInfo debitAcc; + private AccountTranInfo creditAcc; + + private String plcLocacode; + private String porOrgacode; + private String ppmPymdcode; + private String sgtGntrcreateusr; + private String sgtGntrnarration; + private LocalDate sgtGntrvaluedate; + + // ---------------- INNER CLASSES ---------------- + + @Data + public static class AdditionalInfo { + private String sgtBnfowner; + private String sgtPrcRlcscodec; + private String sgtPtrtrancode; + private String sgtRelwithbnfowner; + private String sgtTranreason; + } + + @Data + public static class AccountTranInfo { + private String mbmBkmsnumber; + private BigDecimal sgtGntramtfc; + private String pitInstcode; + private String sgtGntrinstrumentno; + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/dto/GlToAccountDTO.java b/aconnect/src/main/java/com/mfsys/aconnect/client/dto/GlToAccountDTO.java new file mode 100644 index 0000000..2d63607 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/dto/GlToAccountDTO.java @@ -0,0 +1,49 @@ +package com.mfsys.aconnect.client.dto; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Map; + +@Data +public class GlToAccountDTO { + + private Map additionalInfo; + + private DebitGl debitGl; + private CreditAcc creditAcc; + + private String plcLocacode; + private String porOrgacode; + private String ppmPymdcode; + private String sgtGntrcreateusr; + private String sgtGntrnarration; + private LocalDate sgtGntrvaluedate; + + private String sgtGntrtmudf1; + private String sgtGntrtmudf2; + private String sgtGntrudf3; + private String sgtGntrudf4; + private String sgtGntrudf5; + private String refNo; + + @Data + public static class DebitGl { + private String pcaGlaccode; + private String plcLocacode; + private BigDecimal sgtGntramtfc; + } + + @Data + public static class CreditAcc { + private String mbmBkmsnumber; + private BigDecimal sgtGntramtfc; + private String accsgtGntrnarration; + private String accsgtGntrudf3; + private String accsgtGntrudf4; + private String accsgtGntrudf5; + private String pitInstcode; + private String sgtGntrinstrumentno; + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/model/IDType.java b/aconnect/src/main/java/com/mfsys/aconnect/client/model/IDType.java new file mode 100644 index 0000000..33fe2b1 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/model/IDType.java @@ -0,0 +1,26 @@ +package com.mfsys.aconnect.client.model; + +public enum IDType { + + cnic("CNIC","01"), + poc("POC","04"), + nicop("NICOP","05"), + passport("PASSPORT","02"); + + private final String value; + private final String code; + + IDType(String value, String code) { + this.value = value; + this.code = code; + } + + public String getValue() { + return value; + } + + public String getCode() { + return code; + } + +} \ No newline at end of file diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/LoginService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/AuthService.java similarity index 55% rename from aconnect/src/main/java/com/mfsys/aconnect/client/service/LoginService.java rename to aconnect/src/main/java/com/mfsys/aconnect/client/service/AuthService.java index 4c83498..9daedc7 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/service/LoginService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/AuthService.java @@ -2,7 +2,6 @@ package com.mfsys.aconnect.client.service; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.*; import org.springframework.stereotype.Service; @@ -12,7 +11,7 @@ import java.util.HashMap; import java.util.Map; @Service -public class LoginService { +public class AuthService { @Value("${app.organization.uri}") private String OrgaCode; @@ -20,20 +19,10 @@ public class LoginService { @Value("${app.security.uri}") private String securityURI; - @Autowired - private EnvironmentDetectionService environmentDetectionService; - private final RestTemplate restTemplate = new RestTemplate(); private final ObjectMapper objectMapper = new ObjectMapper(); public Map authenticate(Map payload) { - String username = payload.get("username"); - String password = payload.get("password"); - -// // Detect environment and get security URI based on username -// String userEnvironment = environmentDetectionService.detectEnvironmentFromUsername(username); -// String securityUri = environmentDetectionService.getSecurityUriForUser(username); -// boolean isUserMapped = environmentDetectionService.isUserMapped(username); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); @@ -44,12 +33,6 @@ public class LoginService { HttpEntity> request = new HttpEntity<>(requestPayload, headers); try { -// System.out.println("=== Environment-Based Routing ==="); -// System.out.println("Username: " + username); -// System.out.println("Detected Environment: " + userEnvironment); -// System.out.println("Security Service: " + securityUri); -// System.out.println("User Explicitly Mapped: " + isUserMapped); - ResponseEntity response = restTemplate.postForEntity(securityURI, request, String.class); JsonNode jsonNode = objectMapper.readTree(response.getBody()); @@ -57,18 +40,9 @@ public class LoginService { result.put("authenticated", jsonNode.get("authenticated").asBoolean()); result.put("token", jsonNode.get("token").asText()); result.put("userName", jsonNode.get("userName").asText()); -// result.put("securityServiceUsed", securityUri); -// result.put("userEnvironment", userEnvironment); -// result.put("userExplicitlyMapped", isUserMapped); - return result; } catch (Exception e) { -// System.err.println("Authentication failed for user: " + username); -// System.err.println("Environment: " + userEnvironment); -// System.err.println("Security Service: " + securityUri); -// System.err.println("Error: " + e.getMessage()); - return Map.of( "authenticated", false, "error", "Authentication failed: " + e.getMessage() diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/CancellationTransactionService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/CancellationTransactionService.java new file mode 100644 index 0000000..777133f --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/CancellationTransactionService.java @@ -0,0 +1,74 @@ +package com.mfsys.aconnect.client.service; + +import com.mfsys.aconnect.client.dto.DepositCancellationDTO; +import com.mfsys.aconnect.client.dto.GLCancellationDTO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; +import static com.mfsys.common.configuration.constant.AconnectURI.GENERALLEDGER; + +@Service +public class CancellationTransactionService { + + @Value("${app.deposit.uri}") + private String depositURI; + + @Value("${app.generalledger.uri}") + private String generalledgerURI; + + public Object processDepositCancellationTransaction(DepositCancellationDTO depositCancellationDTO, String tokenHeader) { + String porOrgacode = depositCancellationDTO.getPorOrgacode(); + String url = depositURI + "/deposit" + "/organizations/" + depositCancellationDTO.getPorOrgacode() + + "/transactions" + ACONNECT + "/cancel/nodes/" + depositCancellationDTO.getNodeId() + + "/trannums/" + depositCancellationDTO.getSgtGntrtranlink(); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", depositCancellationDTO.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(depositCancellationDTO, headers); + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + + public Object processGLCancellationTransaction(GLCancellationDTO glCancellationDTO, String tokenHeader) { + String porOrgacode = glCancellationDTO.getPorOrgacode(); + String url = generalledgerURI + GENERALLEDGER + "/organizations/" + glCancellationDTO.getPorOrgacode() + + "/transactions" + ACONNECT + "/cancel/nodes/" + glCancellationDTO.getNodeId() + + "/trannums/" + glCancellationDTO.getSgtGntrtranlink(); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", glCancellationDTO.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(glCancellationDTO, headers); + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/EnvironmentDetectionService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/EnvironmentDetectionService.java deleted file mode 100644 index 839c76f..0000000 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/service/EnvironmentDetectionService.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.mfsys.aconnect.client.service; - -import org.springframework.core.env.Environment; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; - -@Service -public class EnvironmentDetectionService { - - @Autowired - private Environment environment; - - public String detectEnvironmentFromUsername(String username) { - // Check if user has specific environment mapping - String userEnvironment = environment.getProperty("app.user." + username + ".environment"); - - if (userEnvironment != null) { - return userEnvironment; - } - - // Default environment if user not mapped - return environment.getProperty("app.environment.default", "dev"); - } - - public String getSecurityUriForEnvironment(String environmentType) { - // Get security URI for the detected environment - String securityUri = environment.getProperty("app.environment." + environmentType + ".securityUri"); - - if (securityUri != null) { - return securityUri; - } - - // Fallback to default - return environment.getProperty("app.security.uri.default", - "http://localhost:9090/security/auth/user"); - } - - public String getSecurityUriForUser(String username) { - String userEnvironment = detectEnvironmentFromUsername(username); - return getSecurityUriForEnvironment(userEnvironment); - } - - public boolean isUserMapped(String username) { - return environment.getProperty("app.user." + username + ".environment") != null; - } - - public Map getUserEnvironmentInfo(String username) { - String environment = detectEnvironmentFromUsername(username); - String securityUri = getSecurityUriForEnvironment(environment); - - return Map.of( - "username", username, - "environment", environment, - "securityUri", securityUri, - "isMapped", String.valueOf(isUserMapped(username)) - ); - } -} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/RejectTransactionService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/RejectTransactionService.java new file mode 100644 index 0000000..859b447 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/RejectTransactionService.java @@ -0,0 +1,66 @@ +package com.mfsys.aconnect.client.service; + +import com.mfsys.aconnect.client.dto.DepositRejectDTO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; + +@Service +public class RejectTransactionService { + + @Value("${app.deposit.uri}") + private String depositURI; + + @Value("${app.generalledger.uri}") + private String generalledgerURI; + + private final RestTemplate restTemplate = new RestTemplate(); + + public Object processDepositRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) { + String porOrgacode = rejectRequest.getPorOrgacode(); + String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection"; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", rejectRequest.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(rejectRequest, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + + public Object processGLRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) { + String porOrgacode = rejectRequest.getPorOrgacode(); + String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection"; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", rejectRequest.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(rejectRequest, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/ReversalTransactionService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/ReversalTransactionService.java new file mode 100644 index 0000000..7780329 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/ReversalTransactionService.java @@ -0,0 +1,71 @@ +package com.mfsys.aconnect.client.service; + +import com.mfsys.aconnect.client.dto.DepositReversalDTO; +import com.mfsys.aconnect.client.dto.GLReversalDTO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; + +@Service +public class ReversalTransactionService { + + @Value("${app.deposit.uri}") + private String depositURI; + + @Value("${app.generalledger.uri}") + private String generalledgerURI; + + private final RestTemplate restTemplate = new RestTemplate(); + public Object processDepositReversalTransaction(DepositReversalDTO reversalRequest, String tokenHeader) { + String porOrgacode = reversalRequest.getPorOrgacode(); + String nodeID = reversalRequest.getNodeId(); + String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink(); + String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/reversals/nodes/" + nodeID + "/trannums/" + sgtGntrtranlink; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", reversalRequest.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(reversalRequest, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + + public Object processGLReversalTransaction(GLReversalDTO reversalRequest, String tokenHeader) { + String porOrgacode = reversalRequest.getPorOrgacode(); + String nodeID = reversalRequest.getNodeId(); + String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink(); + + String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions"+ ACONNECT +"/reversals/nodes/" + nodeID + "/trannums/" + sgtGntrtranlink; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", reversalRequest.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(reversalRequest, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/TransactionAuthorizationService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/TransactionAuthorizationService.java new file mode 100644 index 0000000..8f81868 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/TransactionAuthorizationService.java @@ -0,0 +1,68 @@ +package com.mfsys.aconnect.client.service; + +import com.mfsys.aconnect.client.dto.DepositAuthorizationRequest; +import com.mfsys.aconnect.client.dto.GLAuthorizationDTO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +import static com.mfsys.common.configuration.constant.AconnectURI.ACONNECT; + +@Service +public class TransactionAuthorizationService { + + @Value("${app.deposit.uri}") + private String depositURI; + + @Value("${app.generalledger.uri}") + private String generalledgerURI; + + private final RestTemplate restTemplate = new RestTemplate(); + + public Object processDepositAuthTransaction(DepositAuthorizationRequest authorizationRequest, String tokenHeader) { + String porOrgacode = authorizationRequest.getPorOrgacode(); + String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/authorizations"; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", authorizationRequest.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); + + HttpEntity entity = new HttpEntity<>(authorizationRequest, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + + public Object processGLAuthTransaction(GLAuthorizationDTO authorizationRequest, String tokenHeader) { + String porOrgacode = authorizationRequest.getPorOrgacode(); + String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions/authorizations"; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", tokenHeader); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", authorizationRequest.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(authorizationRequest, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/TransactionService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/TransactionService.java index 85aa339..cc90c83 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/service/TransactionService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/TransactionService.java @@ -25,6 +25,9 @@ public class TransactionService { @Value("${app.generalledger.uri}") private String generalledgerURI; + @Value("${app.onlinebanking.uri}") + private String onlinebankingURI; + private final RestTemplate restTemplate = new RestTemplate(); public ResponseEntity getActiveAccountDetails(String porOrgacode, String mbmBkmsnumber, LocalDate sgtGntrvaluedate, String tokenHeader, String userCode) { @@ -108,90 +111,19 @@ public class TransactionService { return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); } - public Object processDepositAuthTransaction(DepositAuthorizationRequest authorizationRequest, String tokenHeader) { - String porOrgacode = authorizationRequest.getPorOrgacode(); - String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/authorizations"; - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", tokenHeader); - headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", authorizationRequest.getSusUsercode()); - headers.setContentType(MediaType.APPLICATION_JSON); - headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); - - HttpEntity entity = new HttpEntity<>(authorizationRequest, headers); - RestTemplate restTemplate = new RestTemplate(); - - ResponseEntity response = restTemplate.exchange( - url, - HttpMethod.POST, - entity, - Map.class - ); - - return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); - } - - public Object processGLAuthTransaction(GLAuthorizationDTO authorizationRequest, String tokenHeader) { - String porOrgacode = authorizationRequest.getPorOrgacode(); - String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions/authorizations"; - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", tokenHeader); - headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", authorizationRequest.getSusUsercode()); - headers.setContentType(MediaType.APPLICATION_JSON); - - HttpEntity entity = new HttpEntity<>(authorizationRequest, headers); - RestTemplate restTemplate = new RestTemplate(); - - ResponseEntity response = restTemplate.exchange( - url, - HttpMethod.POST, - entity, - Map.class - ); - - return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); - } - - public Object processDepositReversalTransaction(DepositReversalDTO reversalRequest, String tokenHeader) { - String porOrgacode = reversalRequest.getPorOrgacode(); - String nodeID = reversalRequest.getNodeId(); - String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink(); - String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT + "/reversals/nodes/" + nodeID + "/trannums/" + sgtGntrtranlink; - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", tokenHeader); - headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", reversalRequest.getSusUsercode()); - headers.setContentType(MediaType.APPLICATION_JSON); - - HttpEntity entity = new HttpEntity<>(reversalRequest, headers); - RestTemplate restTemplate = new RestTemplate(); - - ResponseEntity response = restTemplate.exchange( - url, - HttpMethod.POST, - entity, - Map.class - ); - - return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); - } - - public Object processGLReversalTransaction(GLReversalDTO reversalRequest, String tokenHeader) { - String porOrgacode = reversalRequest.getPorOrgacode(); - String nodeID = reversalRequest.getNodeId(); - String sgtGntrtranlink = reversalRequest.getSgtGntrtranlink(); - String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions"+ ACONNECT +"/reversals/nodes/" + nodeID + "/trannums/" + sgtGntrtranlink; + public Object processAccToAccTransaction(AccountToAccountDTO accountToAccountDTO, String tokenHeader) { + String porOrgacode = accountToAccountDTO.getPorOrgacode(); + String url = depositURI + "/deposit/" + "transactions/account-account"; HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", tokenHeader); headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", reversalRequest.getSusUsercode()); + headers.set("SUS_USERCODE", accountToAccountDTO.getSgtGntrcreateusr()); headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); + HttpEntity entity = new HttpEntity<>(accountToAccountDTO, headers); - HttpEntity entity = new HttpEntity<>(reversalRequest, headers); RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.exchange( url, HttpMethod.POST, @@ -200,66 +132,22 @@ public class TransactionService { ); return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); - } - - public Object processDepositRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) { - String porOrgacode = rejectRequest.getPorOrgacode(); - String url = depositURI + "/deposit/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection"; - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", tokenHeader); - headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", rejectRequest.getSusUsercode()); - headers.setContentType(MediaType.APPLICATION_JSON); - - HttpEntity entity = new HttpEntity<>(rejectRequest, headers); - RestTemplate restTemplate = new RestTemplate(); - - ResponseEntity response = restTemplate.exchange( - url, - HttpMethod.POST, - entity, - Map.class - ); - return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); } - public Object processGLRejectionTransaction(DepositRejectDTO rejectRequest, String tokenHeader) { - String porOrgacode = rejectRequest.getPorOrgacode(); - String url = generalledgerURI + "/generalledger/" + "/organizations/" + porOrgacode + "/transactions" + ACONNECT +"/rejection"; - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", tokenHeader); - headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", rejectRequest.getSusUsercode()); - headers.setContentType(MediaType.APPLICATION_JSON); - - HttpEntity entity = new HttpEntity<>(rejectRequest, headers); - RestTemplate restTemplate = new RestTemplate(); - - ResponseEntity response = restTemplate.exchange( - url, - HttpMethod.POST, - entity, - Map.class - ); - - return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); - } - public Object processDepositCancellationTransaction(DepositCancellationDTO depositCancellationDTO, String tokenHeader) { - String porOrgacode = depositCancellationDTO.getPorOrgacode(); - String url = depositURI + "/deposit" + "/organizations/" + depositCancellationDTO.getPorOrgacode() + - "/transactions" + ACONNECT + "/cancel/nodes/" + depositCancellationDTO.getNodeId() + - "/trannums/" + depositCancellationDTO.getSgtGntrtranlink(); + public Object processGLtoAccTransaction(GlToAccountDTO glToAccountDTO, String tokenHeader) { + String porOrgacode = glToAccountDTO.getPorOrgacode(); + String url = depositURI + "/deposit/" + "transactions/gl-account"; HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", tokenHeader); headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", depositCancellationDTO.getSusUsercode()); + headers.set("SUS_USERCODE", glToAccountDTO.getSgtGntrcreateusr()); headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(java.util.List.of(MediaType.APPLICATION_JSON)); + HttpEntity entity = new HttpEntity<>(glToAccountDTO, headers); - HttpEntity entity = new HttpEntity<>(depositCancellationDTO, headers); RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.exchange( url, HttpMethod.POST, @@ -270,28 +158,5 @@ public class TransactionService { return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); } - public Object processGLCancellationTransaction(GLCancellationDTO glCancellationDTO, String tokenHeader) { - String porOrgacode = glCancellationDTO.getPorOrgacode(); - String url = generalledgerURI + GENERALLEDGER + "/organizations/" + glCancellationDTO.getPorOrgacode() + - "/transactions" + ACONNECT + "/cancel/nodes/" + glCancellationDTO.getNodeId() + - "/trannums/" + glCancellationDTO.getSgtGntrtranlink(); - - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", tokenHeader); - headers.set("POR_ORGACODE", porOrgacode); - headers.set("SUS_USERCODE", glCancellationDTO.getSusUsercode()); - headers.setContentType(MediaType.APPLICATION_JSON); - - HttpEntity entity = new HttpEntity<>(glCancellationDTO, headers); - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.exchange( - url, - HttpMethod.POST, - entity, - Map.class - ); - - return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); - } } diff --git a/aconnect/src/main/resources/application-dev.properties b/aconnect/src/main/resources/application-dev.properties index ae6fde9..5ff9154 100644 --- a/aconnect/src/main/resources/application-dev.properties +++ b/aconnect/src/main/resources/application-dev.properties @@ -1,5 +1,6 @@ app.security.uri=http://localhost:9090/security/auth/user app.deposit.uri=http://localhost:9095 app.generalledger.uri=http://localhost:9093 +app.onlinebanking.uri=http://localhost:9099 app.organization.uri=0005 diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java index 3f9cde0..7448689 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java @@ -20,6 +20,8 @@ public interface AconnectURI { String TRANSACTION_ACCOUNT_GL_URI = TRANSACTION_URI + "/accounttogl"; String TRANSACTION_GL_GL_URI = TRANSACTION_URI + "/gltogls"; + String ACCOUNT_TO_ACCOUNT_TRANSACTION_URI = TRANSACTION_URI + "/accounttoaccount"; + String GL_TO_ACCOUNT_TRANSACTION_URI = TRANSACTION_URI + "/gl-account"; String TRANSACTION_CANCEL_URI = TRANSACTION_URI + CANCEL_URI + "/nodes/{nodeId}/trannums/{sgtGntrtranlink}"; String DEPOSIT_TRANSACTION_REJECT_URI = DEPOSIT + TRANSACTION_URI + REJECT_URI; String GENERALLEDGER_TRANSACTION_REJECT_URI = GENERALLEDGER + TRANSACTION_URI + REJECT_URI; diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java index 669355b..a123cbf 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java @@ -13,6 +13,8 @@ public interface TokenBypassURI { "/deposit/account/miscDetails", "/aconnect/account/getAccountDetails", "/aconnect/transactions/gltogls", + "/aconnect/transactions/accounttoaccount", + "/aconnect/transactions/gl-account", "/aconnect/deposit/authorizations", "/aconnect/generalledger/authorizations", "/aconnect/deposit/authorizations",