Browse Source

Ya se envian los correos electronicos cuando se selecciona a un usuario en el ComboBox

master
mramirezg 9 months ago
parent
commit
58af4c2d31
6 changed files with 111 additions and 12 deletions
  1. +9
    -0
      pom.xml
  2. +11
    -1
      src/main/java/mx/gob/jumapacelaya/models/Usuario.java
  3. +6
    -7
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  4. +30
    -0
      src/main/java/mx/gob/jumapacelaya/services/EmailService.java
  5. +36
    -2
      src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
  6. +19
    -2
      src/main/resources/application.properties

+ 9
- 0
pom.xml View File

@ -82,21 +82,30 @@
</dependency>
<dependency>
<!-- Dependencia para utilizar JDBC en la Base de Datos -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<!-- Connector de base de datos MySQL -->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<!-- Conector a base de datos Oracle-->
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
<!-- Dependencia para poder enviar correos -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>


+ 11
- 1
src/main/java/mx/gob/jumapacelaya/models/Usuario.java View File

@ -3,10 +3,12 @@ package mx.gob.jumapacelaya.models;
public class Usuario {
private String empleadoId;
private String nombre;
private String email;
public Usuario(String empleadoId, String nombre) {
public Usuario(String empleadoId, String nombre, String email) {
this.empleadoId = empleadoId;
this.nombre = nombre;
this.email = email;
}
public String getEmpleadoId() {
@ -25,6 +27,14 @@ public class Usuario {
this.nombre = nombre;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {


+ 6
- 7
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -81,19 +81,18 @@ public class DatabaseService {
/* -------------- Metodo para obtener a los usuarios ---------------- */
public List<Usuario> getUsuarios() {
List<Usuario> usuarios = new ArrayList<>();
String query = "SELECT u.*, e.EMAIL \n" +
"FROM ADMON.USUARIOS u\n" +
"INNER JOIN ADMON.EMPLEADOS e ON\n" +
"u.EMPLEADOID = e.EMPLEADOID";
String query = "SELECT u.* \n" +
"FROM Mantenimientos.USUARIOS u;";
try (Connection connection = getOracleConnection();
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
Usuario usuario = new Usuario(
resultSet.getString("empleadoid"),
resultSet.getString("nombre")
resultSet.getString("nombre"),
resultSet.getString("correo")
);
usuarios.add(usuario);
}
@ -327,7 +326,7 @@ public class DatabaseService {
// INSERTAR EN LA TABLA: ACTUALIZACIONESSEG
public boolean insertActualizacionSeg(String descripcion, String otras, int mantenimientoId) {
String query = "INSERT INTO ACTUALIZACIONESSEG (actualizacion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)";
String query = "INSERT INTO ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)";
try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {


+ 30
- 0
src/main/java/mx/gob/jumapacelaya/services/EmailService.java View File

@ -0,0 +1,30 @@
package mx.gob.jumapacelaya.services;
import com.vaadin.flow.component.notification.Notification;
import mx.gob.jumapacelaya.models.Usuario;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
public void enviarCorreo(String destinatario, String asunto, String cuerpo) {
SimpleMailMessage mensaje = new SimpleMailMessage();
mensaje.setTo(destinatario);
mensaje.setSubject(asunto);
mensaje.setText(cuerpo);
mensaje.setFrom("noreply@jumapacelaya.gob.mx");
try {
mailSender.send(mensaje);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Error al enviar el correo: " + e.getMessage());
}
}
}

+ 36
- 2
src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java View File

@ -1,5 +1,6 @@
package mx.gob.jumapacelaya.ui;
import com.mysql.cj.log.Log;
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.ButtonVariant;
@ -33,8 +34,10 @@ import mx.gob.jumapacelaya.models.TiposHardware;
import mx.gob.jumapacelaya.models.TiposMantenimiento;
import mx.gob.jumapacelaya.models.Usuario;
import mx.gob.jumapacelaya.services.DatabaseService;
import mx.gob.jumapacelaya.services.EmailService;
import mx.gob.jumapacelaya.services.SecurityService;
import mx.gob.jumapacelaya.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.LocalDate;
import java.util.*;
@ -59,6 +62,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
private final ComboBox<Usuario> usuario;
private final TextField nombreEquipo;
private final UserService userService;
private final EmailService emailService;
private RadioButtonGroup<String> formaGroup;
private CheckboxGroup<String> actualizaciones;
private final HorizontalLayout botonesLayout;
@ -72,7 +76,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
Span userSignSpan = new Span("Nombre Usuario");
public MantenimientoView(UserService userService, SecurityService securityService) {
public MantenimientoView(UserService userService, SecurityService securityService, EmailService emailService) {
this.databaseService = new DatabaseService();
this.controlsLayout = new VerticalLayout();
this.actualizacionesLayout = new VerticalLayout();
@ -80,6 +84,8 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
this.firmasLayout = new HorizontalLayout();
this.botonesLayout = new HorizontalLayout();
this.securityService = securityService;
this.userService = userService;
this.emailService = emailService;
HorizontalLayout fechaLayout = new HorizontalLayout();
//Componentes de texto
@ -171,6 +177,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
});
this.nombreEquipo = new TextField("Nombre del Equipo");
nombreEquipo.setRequired(true);
@ -186,7 +193,6 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
add(fechaLayout, departamentoLayout, controlsLayout, actualizacionesLayout, etiquetaLayout, firmasLayout, botonesLayout);
this.userService = userService;
}
@ -492,6 +498,8 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
String smtSignatureBase64 = Base64.getEncoder().encodeToString(smtSignatureBytes);
String gciaSignatureBase64 = Base64.getEncoder().encodeToString(gciatiSignatureBytes);
// Aqui se manda llamar al metodo de insertar mantenimiento en DatabaseService y se le pasan los argumentos necesarios
int isInserted = databaseService.insertarMantenimiento(
fechaSeleccionada, tipoMantId, departamentoId, empleadoId, formaMantt, equipoId,
userSignatureBase64, smtSignatureBase64, gciaSignatureBase64, planAnualvalue);
@ -589,6 +597,15 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
Notification.show("!!Mantenimiento guardado exitosamente!!", 4000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_SUCCESS);
// Envio del correo electronico
try {
enviarCorreo(); // Intento de envío de correo
} catch (Exception e) {
Notification.show("Error al enviar el correo", 4000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
e.printStackTrace(); // Registro de error para diagnóstico
}
fecha.clear();
txtPlananualID.clear();
tipoMantt.clear();
@ -607,6 +624,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
} else {
Notification.show("Error al guardar el mantenimeinto", 4000, Notification.Position.MIDDLE);
}
});
buttonsLayout.setSizeFull();
@ -615,6 +633,22 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
}
// METODO PARA ENVIAR CORREOS ELECTRONICOS
private void enviarCorreo() {
Usuario usuarioSeleccionado = usuario.getValue();
if (usuarioSeleccionado != null && usuarioSeleccionado.getEmail() != null) {
String destinatario = usuarioSeleccionado.getEmail();
String asunto = "Mantenimiento de Equipo de Computo";
String cuerpo = "Buen día, les hacemos llegar por medio de este correo electrónico una notificación de que su mantenimiento (preventivo/correctivo) se realizo con éxito. Si desea tener una copia del formato, favor de mandar correo electrónico directamente a la Lic. David";
emailService.enviarCorreo(destinatario, asunto, cuerpo);
} else {
Notification.show("Por favor selecciona un usuario", 4000, Notification.Position.MIDDLE);
}
}
@Override
public void beforeEnter(BeforeEnterEvent beforeEnterEvent) {
String fechaParam = beforeEnterEvent.getLocation().getQueryParameters().getParameters().get("fecha") != null


+ 19
- 2
src/main/resources/application.properties View File

@ -14,7 +14,7 @@ spring.jpa.defer-datasource-initialization = true
spring.ldap.urls=ldap://172.1.0.1:389
spring.ldap.base=DC=JUMAPACELAYA,DC=GOB,DC=MX
spring.ldap.username=administrator
spring.ldap.password=Dr3na%134$4guA
spring.ldap.password=Dr3na$134%4guA
###################PRODUCTIVO####################
redmine.url=https://proyman.jumapacelaya.gob.mx/
@ -26,16 +26,33 @@ redmine.api_key=ce4dc8b6b531c818017e6831a5732ccc15b8faf6
#redmine.api_key=bada7949fd4d879cbd98eb645ae4b88603bf77d0
#Conexion a la base de datos principal (escritura) MySQL
spring.datasource.url=jdbc:mysql://mhdb.jumapacelaya.gob.mx:33006/Mantenimientos
spring.datasource.url=jdbc:mysql://185.196.20.240:33006/Mantenimientos
spring.datasource.username=root
spring.datasource.password=mantenimientos
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#Conexion a la base de datos secundaria (lectura) Oracle
spring.datasource.secondary.url=jdbc:oracle:thin:@//svradminfinan:1521/admfinpdb.JUMAPACELAYA.GOB.MX
spring.datasource.secondary.username=Finanzas
spring.datasource.secondary.password=finanzas
spring.datasource.secondary.driver-class-name=oracle.jdbc.OracleDriver
#Conexion al servidor de correo electronico
spring.mail.host=correo.jumapacelaya.gob.mx
spring.mail.port=587
spring.mail.username=noreply@jumapacelaya.gob.mx
spring.mail.password=Div#13AJum$17
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=false
spring.mail.properties.mail.smtp.ssl.trust=correo.jumapacelaya.gob.mx

Loading…
Cancel
Save