Browse Source

Se arreglo el error de la imagen que llega por correo que llega duplicada y tambien se arreglo el error el cual hacia que si se dejaba un campo de firma en blanco de todos modos insertaba algo en la tabla, ahora ya no; si se queda en blanco el campo de firma en la base de datos se queda nulo el registro

master
mramirezg 9 months ago
parent
commit
65e3e03cb1
4 changed files with 64 additions and 27 deletions
  1. +26
    -13
      src/main/java/mx/gob/jumapacelaya/services/EmailService.java
  2. +38
    -14
      src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
  3. BIN
      src/main/resources/META-INF/resources/images/imgCorreo/correoMantt.png
  4. BIN
      src/main/resources/META-INF/resources/images/imgCorreo/imgCorreo.png

+ 26
- 13
src/main/java/mx/gob/jumapacelaya/services/EmailService.java View File

@ -1,30 +1,43 @@
package mx.gob.jumapacelaya.services;
import com.vaadin.flow.component.notification.Notification;
import jakarta.mail.internet.MimeMessage;
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.mail.javamail.MimeMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import java.io.File;
@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());
}
public void enviarCorreo(String destinatario, String asunto, String cuerpo, String imagePath) {
try {
MimeMessage mensaje = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mensaje, true);
helper.setTo(destinatario);
helper.setSubject(asunto);
helper.setFrom("noreply@jumapacelaya.gob.mx");
helper.setText(cuerpo, true);
File image = new File(imagePath);
helper.addInline("image_id", image);
mailSender.send(mensaje);
System.out.println("Correo enviado con imagen exitosamente");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Error al enviar el correo: " + e.getMessage());
}
}
}

+ 38
- 14
src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java View File

@ -177,13 +177,17 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
});
// Boton auxiliar para probar el envio de los correos electronicos
Button btnEnviarCorreo = new Button("Enviar correo de prueba");
btnEnviarCorreo.addClickListener(event -> enviarCorreo());
this.txtNombreEquipo = new TextField("Nombre del Equipo");
txtNombreEquipo.setRequired(true);
txtNombreEquipo.setReadOnly(true);
departamentoLayout.add(area, usuario, txtNombreEquipo);
departamentoLayout.add(area, usuario, btnEnviarCorreo, txtNombreEquipo);
departamentoLayout.setWidthFull();
createHardwareSection(databaseService);
@ -390,6 +394,8 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
private String emptySignature;
private void signLayout() {
VerticalLayout userSignLayout = new VerticalLayout();
userSignPad = new SignaturePad();
@ -404,6 +410,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
userSignLayout.setAlignItems(Alignment.CENTER);
userSignLayout.add(userSignPad, userSignSpan, tituloUser);
VerticalLayout smtSignLayout = new VerticalLayout();
smtSignPad = new SignaturePad();
smtSignPad.setHeight("200px");
@ -440,6 +447,20 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
}
// Metodo para verificar si la firma corresponde a una cadena de firma vacia
private boolean esFirmaVacia(String firmaBase64) {
if (firmaBase64 == null || firmaBase64.isEmpty()) {
return true;
}
String firmaVacia = "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";
return firmaBase64.equals(firmaVacia);
}
private void buttons() {
HorizontalLayout buttonsLayout = new HorizontalLayout();
Button btnGuardar = new Button("Guardar");
@ -484,15 +505,6 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
byte[] smtSignatureBytes = smtSignPad.getImageBase64();
byte[] gciatiSignatureBytes = gciatiSignPad.getImageBase64();
// Valida si los campos de firma estan vacios
if (userSignatureBytes == null || userSignatureBytes.length == 0 ||
smtSignatureBytes == null || smtSignatureBytes.length == 0 ||
gciatiSignatureBytes == null || gciatiSignatureBytes.length == 0) {
Notification.show("Por favor, firme el mantenimiento.", 4000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_WARNING);
return;
}
// Convierte los byte[] a String en formato Base64
String userSignatureBase64 = Base64.getEncoder().encodeToString(userSignatureBytes);
@ -500,6 +512,13 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
String gciaSignatureBase64 = Base64.getEncoder().encodeToString(gciatiSignatureBytes);
// Validacion de firmas si es igual o no a la cadena de firma vacia
userSignatureBase64 = esFirmaVacia(userSignatureBase64) ? null : userSignatureBase64;
smtSignatureBase64 = esFirmaVacia(smtSignatureBase64) ? null : smtSignatureBase64;
gciaSignatureBase64 = esFirmaVacia(gciaSignatureBase64) ? null : gciaSignatureBase64;
// 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,
@ -604,7 +623,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
} 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
e.printStackTrace();
}
fecha.clear();
@ -639,10 +658,15 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
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";
String asunto = "MANTENIMIENTO DE EQUIPO DE COMPUTO REALIZADO";
String cuerpo = "<html><body>"
+ "<img src='cid:image_id'/>"
+ "</body></html>";
String imagePath = "src/main/resources/META-INF/resources/images/imgCorreo/correoMantt.png";
emailService.enviarCorreo(destinatario, asunto, cuerpo);
emailService.enviarCorreo(destinatario, asunto, cuerpo, imagePath);
} else {
Notification.show("Por favor selecciona un usuario", 4000, Notification.Position.MIDDLE);


BIN
src/main/resources/META-INF/resources/images/imgCorreo/correoMantt.png View File

Before After
Width: 1920  |  Height: 1080  |  Size: 1.8 MiB

BIN
src/main/resources/META-INF/resources/images/imgCorreo/imgCorreo.png View File

Before After
Width: 1920  |  Height: 1080  |  Size: 1.3 MiB

Loading…
Cancel
Save