@ -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 ) ;