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