diff --git a/pom.xml b/pom.xml
index d6fafb1..97432d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
bus-retrieve-security-notification
1.0-native-quarkus-jdk17
bus-retrieve-security-notification
- API Business - Read payment statuses of the file by ID
+ API Business - Read alert message by ID
17
diff --git a/scripts/native/file/bus-retrieve-security-notification-1.0-native-quarkus-jdk17-runner b/scripts/native/file/bus-retrieve-security-notification-1.0-native-quarkus-jdk17-runner
index 7e0bbd1..f276d63 100644
Binary files a/scripts/native/file/bus-retrieve-security-notification-1.0-native-quarkus-jdk17-runner and b/scripts/native/file/bus-retrieve-security-notification-1.0-native-quarkus-jdk17-runner differ
diff --git a/src/main/java/com/banesco/common/domain/model/HttpRequest.java b/src/main/java/com/banesco/common/domain/model/HttpRequest.java
index af48ca7..35a46e8 100644
--- a/src/main/java/com/banesco/common/domain/model/HttpRequest.java
+++ b/src/main/java/com/banesco/common/domain/model/HttpRequest.java
@@ -58,103 +58,117 @@ public class HttpRequest {
private boolean logResponseBody = true;
public static HttpRequest forApiResponse(
- String url,
- HttpMethod method,
- Class dataType
+ String url,
+ HttpMethod method,
+ Class dataType
) {
return HttpRequest.builder()
- .url(url)
- .method(method)
- .responseType(ApiResponse.class)
- .genericType(dataType)
- .apiResponse(true)
- .build();
+ .url(url)
+ .method(method)
+ .responseType(ApiResponse.class)
+ .genericType(dataType)
+ .apiResponse(true)
+ .build();
}
public static HttpRequest forApiResponseList(
- String url,
- HttpMethod method,
- Class elementType
+ String url,
+ HttpMethod method,
+ Class elementType
) {
return HttpRequest.builder()
- .url(url)
- .method(method)
- .responseType(ApiResponse.class)
- .complexType(TypeBuilder.listOf(elementType))
- .apiResponse(true)
- .listResponse(true)
- .build();
+ .url(url)
+ .method(method)
+ .responseType(ApiResponse.class)
+ .complexType(TypeBuilder.listOf(elementType))
+ .apiResponse(true)
+ .listResponse(true)
+ .build();
}
public static HttpRequest forApiPrivateResponse(
- String url,
- String statusSuccess,
- HttpMethod method,
- Class successType
+ String url,
+ String statusSuccess,
+ HttpMethod method,
+ Class successType
) {
return HttpRequest.builder()
- .url(url)
- .method(method)
- .responseType(ApiPrivateResponse.class)
- .complexType(TypeBuilder.parametricType(
- Either.class,
- successType,
- ApiPrivateError.class
- ))
- .apiPrivateResponse(true)
- .eitherResponse(true)
- .errorType(ApiPrivateError.class)
- .statusSuccess(statusSuccess)
- .build();
+ .url(url)
+ .method(method)
+ .responseType(ApiPrivateResponse.class)
+ .complexType(TypeBuilder.parametricType(
+ Either.class,
+ successType,
+ ApiPrivateError.class
+ ))
+ .apiPrivateResponse(true)
+ .eitherResponse(true)
+ .errorType(ApiPrivateError.class)
+ .statusSuccess(statusSuccess)
+ .build();
}
public static HttpRequest forApiPrivateResponseList(
- String url,
- String statusSuccess,
- HttpMethod method,
- Class elementType
+ String url,
+ String statusSuccess,
+ HttpMethod method,
+ Class elementType
) {
return HttpRequest.builder()
- .url(url)
- .method(method)
- .responseType(ApiPrivateResponse.class)
- .complexType(TypeBuilder.parametricType(
- Either.class,
- TypeBuilder.listOf(elementType),
- ApiPrivateError.class
- ))
- .apiPrivateResponse(true)
- .eitherResponse(true)
- .listResponse(true)
- .errorType(ApiPrivateError.class)
- .statusSuccess(statusSuccess)
- .build();
+ .url(url)
+ .method(method)
+ .responseType(ApiPrivateResponse.class)
+ .complexType(TypeBuilder.parametricType(
+ Either.class,
+ TypeBuilder.listOf(elementType),
+ ApiPrivateError.class
+ ))
+ .apiPrivateResponse(true)
+ .eitherResponse(true)
+ .listResponse(true)
+ .errorType(ApiPrivateError.class)
+ .statusSuccess(statusSuccess)
+ .build();
}
public static HttpRequest forDirectResponse(
- String url,
- HttpMethod method,
- Class responseType
+ String url,
+ HttpMethod method,
+ Class responseType
) {
return HttpRequest.builder()
- .url(url)
- .method(method)
- .responseType(responseType)
- .build();
+ .url(url)
+ .method(method)
+ .responseType(responseType)
+ .build();
+ }
+
+ public static HttpRequest forDirectResponse(
+ String url,
+ HttpMethod method,
+ Class responseType,
+ Class errorType
+ ) {
+ return HttpRequest.builder()
+ .url(url)
+ .method(method)
+ .responseType(responseType)
+ .errorType(errorType)
+ .build();
}
public static HttpRequest forGenericResponse(
- String url,
- HttpMethod method,
- Class rawType,
- Class genericType
+ String url,
+ HttpMethod method,
+ Class rawType,
+ Class genericType
) {
return HttpRequest.builder()
- .url(url)
- .method(method)
- .responseType(rawType)
- .complexType(TypeBuilder.parametricType(rawType, genericType))
- .build();
+ .url(url)
+ .method(method)
+ .responseType(rawType)
+ .complexType(TypeBuilder.parametricType(rawType, genericType))
+ .build();
}
public HttpRequest withHeaders(Map headers) {
diff --git a/src/main/java/com/banesco/module/correspondence/infrastructure/resource/CorrespondenceResource.java b/src/main/java/com/banesco/module/correspondence/infrastructure/resource/CorrespondenceResource.java
index f3eaa79..e67fcee 100644
--- a/src/main/java/com/banesco/module/correspondence/infrastructure/resource/CorrespondenceResource.java
+++ b/src/main/java/com/banesco/module/correspondence/infrastructure/resource/CorrespondenceResource.java
@@ -289,7 +289,7 @@ public class CorrespondenceResource {
String channelCode,
@QueryParam("customerReferenceFintechId")
- @Parameter(description = "ID de la fintech", example = "pranical-test")
+ @Parameter(description = "ID de la fintech", example = "provider-test")
String customerReferenceFintechId,
@QueryParam("appId")
diff --git a/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java b/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java
index 42a1660..ba8972f 100644
--- a/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java
+++ b/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java
@@ -6,6 +6,8 @@ import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.Getter;
import lombok.ToString;
+import java.util.Map;
+
@Getter
@ToString
@RegisterForReflection
@@ -13,4 +15,5 @@ public class SecurityTraceConfig {
private String url;
private TimeoutConfig timeout;
private SecurityTraceRequest request;
+ private Map converters;
}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java b/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java
index 170eca6..19cd63c 100644
--- a/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java
+++ b/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java
@@ -6,6 +6,7 @@ import com.banesco.common.domain.model.ApiResponse;
import com.banesco.common.domain.model.HttpRequest;
import com.banesco.common.infrastructure.config.RestClientConfig;
import com.banesco.module.correspondence.domain.dto.request.CorrespondenceRequest;
+import com.banesco.module.correspondence.domain.dto.response.CorrespondenceResponse;
import com.banesco.module.security_trace.application.usecase.SecurityTraceUseCase;
import com.banesco.module.security_trace.domain.dto.request.SecurityTraceRequest;
import com.banesco.module.security_trace.domain.model.SecurityTraceConfig;
@@ -16,6 +17,7 @@ import jakarta.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
+import java.util.Objects;
@Slf4j
@ApplicationScoped
@@ -89,12 +91,13 @@ public class SecurityTraceClient implements SecurityTraceUseCase {
) {
long executedTime = (endTime - startTime);
int statusHttp = apiResponse.getStatus();
- ApiResponse> apiResponseData = (ApiResponse>) apiResponse.getEntity();
+ ApiResponse apiResponseData =
+ (ApiResponse) apiResponse.getEntity();
return SecurityTraceRequest.builder()
.sp(securityTraceConfig.getRequest().getSp())
.codBan(securityTraceConfig.getRequest().getCodBan())
- .codMon(securityTraceConfig.getRequest().getCodMon())
+ .codMon(getCodMon(apiResponseData))
.codEve(securityTraceConfig.getRequest().getCodEve())
.codEve2(securityTraceConfig.getRequest().getCodEve2())
.login(apiRequest.getChannelCode())
@@ -118,6 +121,46 @@ public class SecurityTraceClient implements SecurityTraceUseCase {
.build();
}
+ private String getCodMon(
+ ApiResponse apiResponseData
+ ) {
+ String defaultCurrency = securityTraceConfig.getRequest().getCodMon();
+
+ if(
+ Objects.isNull(apiResponseData) ||
+ Objects.isNull(apiResponseData.getData()) ||
+ Objects.isNull(apiResponseData.getData().getCorrespondence()) ||
+ apiResponseData.getData().getCorrespondence().isEmpty()
+ ) {
+ log.info("Moneda asignada por defecto: {}", defaultCurrency);
+ return defaultCurrency;
+ }
+
+ String currency = apiResponseData.getData().getCorrespondence().stream()
+ .filter(item ->
+ item.getTransaction() != null &&
+ item.getTransaction().getFinancialTransaction() != null &&
+ !StringUtil.isNullOrEmpty(item.getTransaction().getFinancialTransaction().getCurrencyCode())
+ )
+ .findFirst()
+ .map(item -> item.getTransaction().getFinancialTransaction().getCurrencyCode())
+ .orElse(null);
+
+ if (StringUtil.isNullOrEmpty(currency)) {
+ log.info("Moneda de la peticion/respuesta vacia, asignada por defecto: {}", defaultCurrency);
+ return defaultCurrency;
+ }
+
+ defaultCurrency = securityTraceConfig.getConverters().getOrDefault(
+ currency.toUpperCase(),
+ currency.toUpperCase()
+ );
+
+ log.info("Moneda convertida o por defecto: {} -> {}", currency, defaultCurrency);
+
+ return defaultCurrency;
+ }
+
private String getStatusMessage(
ApiResponse> apiResponseData,
int statusHttp
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 7963ee8..0e5d577 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -13,8 +13,8 @@ api:
bus-retrieve-security-notification:
messages:
key: 'bus-retrieve-security-notification'
- content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN04","httpCode":"503","statusCode":"VRN04","description":"Servicio en horario de mantenimiento","status":"error"},{"backendCode":"VRN02","httpCode":"204","statusCode":"VRN02","description":"Cliente sin productos"}]'
+ content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN04","httpCode":503,"statusCode":"VRN04","description":"Servicio en horario de mantenimiento"},{"backendCode":"PIB-00","httpCode":409,"statusCode":"PIB-00","description":"Error Interno backend"},{"backendCode":"PIB-01","httpCode":409,"statusCode":"PIB-01","description":"Error Interno backend"}]'
rest-client:
dom-retrieve-security-notification: '{"url":"http://localhost:8083/correspondence/retrieve/{securityNotificationId}/{channelCode}","timeout":{"connect":10000,"response":10000}}'
- security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":10000,"response":10000},"request":{"sp":"spAPI_Traza","codEve":"CONSALERTS","codEve2":"CONSALERTS","codBan":"01","codMon":"BS"}}'
+ security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":10000,"response":10000},"request":{"sp":"spAPI_Traza","codEve":"CONSALERTS","codEve2":"CONSALERTS","codBan":"01","codMon":"BS"},"converters":{"VES":"BS"}}'
service-status: '{"url":"http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status","timeout":{"connect":10000,"response":10000},"request":{"applicationId": "","transactionId": "","bankService": {"bankCode": "01","serviceCode": "APIFI","eventCode": "P2PVUEL"}}}'
\ No newline at end of file