From b3825139741803c373e9ae9988b24f49930e5489 Mon Sep 17 00:00:00 2001 From: Fernando Abimael Alvarez Uc Date: Wed, 7 Aug 2024 12:48:59 -0600 Subject: [PATCH 1/4] =?UTF-8?q?Se=20agrega=20funcionalidad=20de=20env?= =?UTF-8?q?=C3=ADo=20de=20correo.Fixes=20bug#AL-4549?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../expressos/CotizarExpresoController.java | 78 ++++++++++++++++++- web/WEB-INF/i3-label_en.label | 4 + web/WEB-INF/i3-label_es_MX.label | 4 + web/WEB-INF/i3-label_fr_FR.label | 4 + web/WEB-INF/i3-label_pt_BR.label | 4 + 6 files changed, 94 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 74a0d31a5..ba93b18f7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.119.1 + 1.119.3 war diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java index 2d9c56b32..b0dea0869 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java @@ -2,12 +2,38 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.expressos; import java.io.IOException; import java.io.InputStream; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.xml.bind.DatatypeConverter; + +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.http.ssl.TrustStrategy; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; @@ -31,6 +57,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.SolicitudExpreso; import com.rjconsultores.ventaboletos.entidad.TrayectosExpresos; import com.rjconsultores.ventaboletos.service.CiudadService; +import com.rjconsultores.ventaboletos.service.ConstanteService; import com.rjconsultores.ventaboletos.service.SolicitudExpresosService; import com.rjconsultores.ventaboletos.service.TrayectosExpresosService; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @@ -39,6 +66,7 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderTrayectosExpreso; +import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; @Controller("cotizarExpresoController") @Scope("prototype") @@ -156,7 +184,7 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ refreshLista(); } - public void onClick$btnGuardarCotizacion(Event event) throws Exception { + public void onClick$btnGuardarCotizacion(Event event) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, Exception { if(docCotizacion == null) { Messagebox.show( Labels.getLabel("expresoController.MSG.errorArchivo"), @@ -166,6 +194,8 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ expreso.setDocCotizacion(docCotizacion); expreso.setStatusSolicitudExpresoId(2); solicitudExpresosService.actualizacion(expreso); + + enviarEmail(); } } @@ -185,6 +215,52 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ refreshLista(); } + + private void enviarEmail() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, ClientProtocolException, IOException, InterruptedException { + ConstanteService constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); + + String urlAPIRJ = constanteService.buscarPorNomeConstante("URL_API_RJ_INFOBIP").getValorconstante(); + String credenciais = constanteService.buscarPorNomeConstante("CREDENCIAIS_API_RJ").getValorconstante(); + String tenant = constanteService.buscarPorNomeConstante("TENANT_API_RJ").getValorconstante(); + + urlAPIRJ = urlAPIRJ.concat("EnviarEmailGenerico"); + + CloseableHttpClient httpClient = HttpClients.createDefault(); + + HttpPost request = new HttpPost(urlAPIRJ); + + List urlParameters = new ArrayList(); + urlParameters.add(new BasicNameValuePair("emailCliente", expreso.getDescEmail())); + urlParameters.add(new BasicNameValuePair("assunto", Labels.getLabel("expresoController.MSG.asuntoCorreoCotizacion"))); + urlParameters.add(new BasicNameValuePair("texto", Labels.getLabel("expresoController.MSG.cuerpoCorreoCotizacion", new Object[] { expreso.getDescNombre() + " " + expreso.getDescApellidos(), "[INSERT LINK HERE CONSTANTE empresa_notificacion_bolivariano]" }))); + urlParameters.add(new BasicNameValuePair("empresaId", "10")); // --> Cambiar por constante empresa_notificacion_bolivariano + + UrlEncodedFormEntity params = new UrlEncodedFormEntity(urlParameters, "UTF-8"); + + request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(credenciais.getBytes()))); + + if (StringUtils.isNotBlank(tenant)){ + request.addHeader("x-tenant-id", tenant); + } + + request.setEntity(params); + + CloseableHttpResponse response = httpClient.execute(request); + + if(response.getStatusLine().getStatusCode() == 200 && response.getStatusLine().getReasonPhrase().equalsIgnoreCase("OK")) { + Messagebox.show( + Labels.getLabel("expresoController.MSG.emailEnviado"), + Labels.getLabel("expresosPorCotizarCotizar.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } else { + Messagebox.show( + Labels.getLabel("expresoController.MSG.emailNoEnviado"), + Labels.getLabel("expresosPorCotizarCotizar.window.title"), + Messagebox.OK, Messagebox.ERROR); + } + + this.closeWindow(); + } public SolicitudExpreso getExpreso() { return expreso; diff --git a/web/WEB-INF/i3-label_en.label b/web/WEB-INF/i3-label_en.label index 2659db140..facdee5bf 100644 --- a/web/WEB-INF/i3-label_en.label +++ b/web/WEB-INF/i3-label_en.label @@ -7590,6 +7590,10 @@ expresosController.lbl.idaVuelta = Going expresoController.MSG.errorArchivo = Invalid or null file cargaContratoController.MSG.errorExpresoNull = Select Express to Associate Contract +cotizarExpresoController.MSG.emailEnviado = Correct Express Quote +expresoController.MSG.emailNoEnviado = There's been a problem. Please check logs +expresoController.MSG.asuntoCorreoCotizacion = Quoted Express Request +expresoController.MSG.cuerpoCorreoCotizacion = Dear {0}, the express request has been quoted, in the following link {1} you can accept the quote and make the payment. #GR indexController.mnGR.label = Passing Stock #Gestao de Pricing diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 7d386057b..82e6f3d72 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -7461,6 +7461,10 @@ expresosController.lbl.idaVuelta = Ida expresoController.MSG.errorArchivo = Archivo inválido o nulo cargaContratoController.MSG.errorExpresoNull = Seleccione Expreso a Asociar Contrato +cotizarExpresoController.MSG.emailEnviado = Cotización de Expreso Correcta +expresoController.MSG.emailNoEnviado = Ocurrió un problema. Favor de revisar logs +expresoController.MSG.asuntoCorreoCotizacion = Solicitud de Expreso Cotizada +expresoController.MSG.cuerpoCorreoCotizacion = Estimado/a {0}, la solicitud de expreso ha sido cotizada, en el siguiente link {1} podrá aceptar la cotización y realizar el pago. #GR indexController.mnGR.label = GR #Gestao de Pricing diff --git a/web/WEB-INF/i3-label_fr_FR.label b/web/WEB-INF/i3-label_fr_FR.label index 94ad6e3ec..11345426d 100644 --- a/web/WEB-INF/i3-label_fr_FR.label +++ b/web/WEB-INF/i3-label_fr_FR.label @@ -7459,6 +7459,10 @@ expresosController.lbl.idaVuelta = En allant expresoController.MSG.errorArchivo = Fichier invalide ou nul cargaContratoController.MSG.errorExpresoNull = Sélectionnez Express pour associer le contrat +cotizarExpresoController.MSG.emailEnviado = Corriger le devis express +expresoController.MSG.emailNoEnviado = Il y a eu un problème. Veuillez vérifier les journaux +expresoController.MSG.asuntoCorreoCotizacion = Demande express citée +expresoController.MSG.cuerpoCorreoCotizacion = Cher {0}, la demande expresse a été citée, dans le lien suivant {1} vous pouvez accepter le devis et effectuer le paiement. #GR indexController.mnGR.label = Passage de stock #Gestao de Pricing diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 03d31d95e..3dbb83bbd 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -7595,6 +7595,10 @@ expresosController.lbl.idaVuelta = Ida expresoController.MSG.errorArchivo = Arquivo inválido ou nulo cargaContratoController.MSG.errorExpresoNull = Selecione Expresso para Associar Contrato +cotizarExpresoController.MSG.emailEnviado = Cotação Expressa Correta +expresoController.MSG.emailNoEnviado = Houve um problema. Verifique os registros +expresoController.MSG.asuntoCorreoCotizacion = Solicitação expressa cotada +expresoController.MSG.cuerpoCorreoCotizacion = Prezado {0}, o pedido expresso foi cotado, no link a seguir {1} você pode aceitar o orçamento e efetuar o pagamento. #GR indexController.mnGR.label = Estoque de Passagem #Gestao de Pricing From b358dbb5e6a6b5c1a6e4b80f15d1b21187c6a7d3 Mon Sep 17 00:00:00 2001 From: Fernando Abimael Alvarez Uc Date: Wed, 7 Aug 2024 13:10:46 -0600 Subject: [PATCH 2/4] Fixes bug#AL-4549 --- .../expressos/CotizarExpresoController.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java index b0dea0869..3006e612d 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java @@ -219,9 +219,10 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ private void enviarEmail() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, ClientProtocolException, IOException, InterruptedException { ConstanteService constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); - String urlAPIRJ = constanteService.buscarPorNomeConstante("URL_API_RJ_INFOBIP").getValorconstante(); - String credenciais = constanteService.buscarPorNomeConstante("CREDENCIAIS_API_RJ").getValorconstante(); - String tenant = constanteService.buscarPorNomeConstante("TENANT_API_RJ").getValorconstante(); + String urlAPIRJ = constanteService.buscarPorNomeConstante("URL_API_RJ_INFOBIP").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("URL_API_RJ_INFOBIP").getValorconstante(); + String credenciais = constanteService.buscarPorNomeConstante("CREDENCIAIS_API_RJ").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("CREDENCIAIS_API_RJ").getValorconstante(); + String tenant = constanteService.buscarPorNomeConstante("TENANT_API_RJ").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("TENANT_API_RJ").getValorconstante(); + String empresaId = constanteService.buscarPorNomeConstante("EMPRESA_NOTIFICACOES_BOLIVARIANO").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("EMPRESA_NOTIFICACOES_BOLIVARIANO").getValorconstante(); urlAPIRJ = urlAPIRJ.concat("EnviarEmailGenerico"); @@ -232,8 +233,8 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ List urlParameters = new ArrayList(); urlParameters.add(new BasicNameValuePair("emailCliente", expreso.getDescEmail())); urlParameters.add(new BasicNameValuePair("assunto", Labels.getLabel("expresoController.MSG.asuntoCorreoCotizacion"))); - urlParameters.add(new BasicNameValuePair("texto", Labels.getLabel("expresoController.MSG.cuerpoCorreoCotizacion", new Object[] { expreso.getDescNombre() + " " + expreso.getDescApellidos(), "[INSERT LINK HERE CONSTANTE empresa_notificacion_bolivariano]" }))); - urlParameters.add(new BasicNameValuePair("empresaId", "10")); // --> Cambiar por constante empresa_notificacion_bolivariano + urlParameters.add(new BasicNameValuePair("texto", Labels.getLabel("expresoController.MSG.cuerpoCorreoCotizacion", new Object[] { expreso.getDescNombre() + " " + expreso.getDescApellidos(), "[INSERT LINK HERE]" }))); + urlParameters.add(new BasicNameValuePair("empresaId", empresaId)); UrlEncodedFormEntity params = new UrlEncodedFormEntity(urlParameters, "UTF-8"); From 73c7e4ef8f8d184212c45800f487e25f249685ff Mon Sep 17 00:00:00 2001 From: Fernando Abimael Alvarez Uc Date: Wed, 7 Aug 2024 14:33:45 -0600 Subject: [PATCH 3/4] Fixes bug#AL4549 --- .../expressos/CotizarExpresoController.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java index 3006e612d..dd5e0847f 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java @@ -217,12 +217,11 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ } private void enviarEmail() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, ClientProtocolException, IOException, InterruptedException { - ConstanteService constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); - String urlAPIRJ = constanteService.buscarPorNomeConstante("URL_API_RJ_INFOBIP").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("URL_API_RJ_INFOBIP").getValorconstante(); - String credenciais = constanteService.buscarPorNomeConstante("CREDENCIAIS_API_RJ").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("CREDENCIAIS_API_RJ").getValorconstante(); - String tenant = constanteService.buscarPorNomeConstante("TENANT_API_RJ").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("TENANT_API_RJ").getValorconstante(); - String empresaId = constanteService.buscarPorNomeConstante("EMPRESA_NOTIFICACOES_BOLIVARIANO").getValorconstante() == null ? null : constanteService.buscarPorNomeConstante("EMPRESA_NOTIFICACOES_BOLIVARIANO").getValorconstante(); + String urlAPIRJ = valorConstante("URL_API_RJ_INFOBIP"); + String credenciais = valorConstante("CREDENCIAIS_API_RJ"); + String tenant = valorConstante("TENANT_API_RJ"); + String empresaId = valorConstante("EMPRESA_NOTIFICACOES_BOLIVARIANO"); urlAPIRJ = urlAPIRJ.concat("EnviarEmailGenerico"); @@ -250,18 +249,24 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ if(response.getStatusLine().getStatusCode() == 200 && response.getStatusLine().getReasonPhrase().equalsIgnoreCase("OK")) { Messagebox.show( - Labels.getLabel("expresoController.MSG.emailEnviado"), + Labels.getLabel("cotizarExpresoController.MSG.emailEnviado"), Labels.getLabel("expresosPorCotizarCotizar.window.title"), Messagebox.OK, Messagebox.INFORMATION); } else { Messagebox.show( - Labels.getLabel("expresoController.MSG.emailNoEnviado"), + Labels.getLabel("cotizarExpresoController.MSG.emailNoEnviado"), Labels.getLabel("expresosPorCotizarCotizar.window.title"), Messagebox.OK, Messagebox.ERROR); } this.closeWindow(); } + + public String valorConstante(String constante) { + ConstanteService constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); + + return constanteService.buscarPorNomeConstante(constante) != null ? constanteService.buscarPorNomeConstante(constante).getValorconstante() : null ; + } public SolicitudExpreso getExpreso() { return expreso; From b6f9b29be4a8f28a83c53ce527ab41e83f3bd790 Mon Sep 17 00:00:00 2001 From: Fernando Abimael Alvarez Uc Date: Wed, 7 Aug 2024 15:29:32 -0600 Subject: [PATCH 4/4] Fixes bug#AL-4549 --- .../expressos/CotizarExpresoController.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java index dd5e0847f..077080d68 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/expressos/CotizarExpresoController.java @@ -53,6 +53,7 @@ import org.zkoss.zul.Paging; import com.rjconsultores.ventaboletos.entidad.Articulo; import com.rjconsultores.ventaboletos.entidad.Ciudad; +import com.rjconsultores.ventaboletos.entidad.Constante; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.SolicitudExpreso; import com.rjconsultores.ventaboletos.entidad.TrayectosExpresos; @@ -86,6 +87,9 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ @Autowired SolicitudExpresosService solicitudExpresosService; + @Autowired + ConstanteService constanteService; + SolicitudExpreso expreso; TrayectosExpresos trayecto; @@ -262,10 +266,10 @@ public class CotizarExpresoController extends MyGenericForwardComposer{ this.closeWindow(); } - public String valorConstante(String constante) { - ConstanteService constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); + public String valorConstante(String nombreConstante) { + Constante constante = constanteService.buscarPorNomeConstante(nombreConstante); - return constanteService.buscarPorNomeConstante(constante) != null ? constanteService.buscarPorNomeConstante(constante).getValorconstante() : null ; + return constante != null ? constante.getValorconstante() : null ; } public SolicitudExpreso getExpreso() {