diff --git a/pom.xml b/pom.xml
index 3ce8ff4..42afd72 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,21 +82,30 @@
+
org.springframework.boot
spring-boot-starter-jdbc
+
mysql
mysql-connector-java
8.0.33
+
com.oracle.database.jdbc
ojdbc8
+
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
+
org.springframework.boot
spring-boot-starter-security
diff --git a/src/main/java/mx/gob/jumapacelaya/models/Usuario.java b/src/main/java/mx/gob/jumapacelaya/models/Usuario.java
index d9e4c91..c368290 100644
--- a/src/main/java/mx/gob/jumapacelaya/models/Usuario.java
+++ b/src/main/java/mx/gob/jumapacelaya/models/Usuario.java
@@ -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() {
diff --git a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
index d512264..4bf867a 100644
--- a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
+++ b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
@@ -81,19 +81,18 @@ public class DatabaseService {
/* -------------- Metodo para obtener a los usuarios ---------------- */
public List getUsuarios() {
List 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)) {
diff --git a/src/main/java/mx/gob/jumapacelaya/services/EmailService.java b/src/main/java/mx/gob/jumapacelaya/services/EmailService.java
new file mode 100644
index 0000000..a2eb270
--- /dev/null
+++ b/src/main/java/mx/gob/jumapacelaya/services/EmailService.java
@@ -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());
+ }
+ }
+}
diff --git a/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java b/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
index 5b62d0d..52968ae 100644
--- a/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
+++ b/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
@@ -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;
private final TextField nombreEquipo;
private final UserService userService;
+ private final EmailService emailService;
private RadioButtonGroup formaGroup;
private CheckboxGroup 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
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e0bc924..2a69ff8 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -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
+
+