@ -232,11 +232,17 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
tipoHardware . setItems ( databaseService . getTiposHardware ( ) ) ;
tipoHardware . setSizeFull ( ) ;
Number Field noSerie = new Number Field( ) ;
Text Field noSerie = new Text Field( ) ;
noSerie . setEnabled ( false ) ;
noSerie . setRequired ( true ) ;
noSerie . setPlaceholder ( "No. Serie" ) ;
noSerie . setSizeFull ( ) ;
/ / Validacion para que este campo solo acepte numeros
noSerie . getElement ( ) . executeJs (
"this.addEventListener('input', function(e) { " +
" e.target.value = e.target.value.replace(/[^0-9]/g, '');" + / / Solo permite dígitos
"});"
) ;
TextField modelo = new TextField ( ) ;
modelo . setEnabled ( false ) ;
@ -244,11 +250,17 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
modelo . setPlaceholder ( "Modelo" ) ;
modelo . setSizeFull ( ) ;
Number Field placa = new Number Field( ) ;
Text Field placa = new Text Field( ) ;
placa . setEnabled ( false ) ;
placa . setRequired ( true ) ;
placa . setPlaceholder ( "Placa" ) ;
placa . setSizeFull ( ) ;
/ / Validacion para que este campo solo acepte numeros
placa . getElement ( ) . executeJs (
"this.addEventListener('input', function(e) { " +
" e.target.value = e.target.value.replace(/[^0-9]/g, '');" + / / Solo permite dígitos
"});"
) ;
tipoHardware . addValueChangeListener ( event - > {
TiposHardware tipoSeleccionado = event . getValue ( ) ;
@ -450,12 +462,7 @@ 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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" ;
String firmaVacia = "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" ;
return firmaBase64 . equals ( firmaVacia ) ;
}
@ -513,9 +520,11 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
/ / 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 ;
if ( esFirmaVacia ( userSignatureBase64 ) | | esFirmaVacia ( smtSignatureBase64 ) | | esFirmaVacia ( gciaSignatureBase64 ) ) {
Notification . show ( "Por favor, completa todas las firmas antes de guardar." , 4000 , Notification . Position . MIDDLE )
. addThemeVariants ( NotificationVariant . LUMO_WARNING ) ;
return ; / / Detiene la ejecución
}
@ -530,9 +539,9 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
for ( HorizontalLayout layout : hardwareLayouts ) {
ComboBox < TiposHardware > tipoHardware = ( ComboBox < TiposHardware > ) layout . getComponentAt ( 0 ) ; / / Ahora es ComboBox < TiposHardware >
Number Field noSerie = ( Number Field) layout . getComponentAt ( 1 ) ;
Text Field noSerie = ( Text Field) layout . getComponentAt ( 1 ) ;
TextField modelo = ( TextField ) layout . getComponentAt ( 2 ) ;
Number Field placa = ( Number Field) layout . getComponentAt ( 3 ) ;
Text Field placa = ( Text Field) layout . getComponentAt ( 3 ) ;
TiposHardware tipoSeleccionado = tipoHardware . getValue ( ) ;
@ -544,13 +553,13 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
boolean esOpcional = tipoSeleccionado ! = null & & tiposOpcionales . contains ( tipoSeleccionado . getNombreHardware ( ) ) ;
/ / Validar campos solo si el tipo de hardware no es opcional
int numSerieInt = noSerie . getValue ( ) ! = null ? noSerie . getValue ( ) . intValue ( ) : 0 ;
int placaInt = placa . getValue ( ) ! = null ? placa . getValue ( ) . intValue ( ) : 0 ;
String numSerieInt = noSerie . getValue ( ) ;
String placaInt = placa . getValue ( ) ;
/ / Validaciones antes de insertar detalles del hardware
if ( ! esOpcional ) {
if ( tipoHardware . getValue ( ) = = null | | modelo . getValue ( ) = = null | | numSerieInt < = 0 | | placaInt < = 0 ) {
if ( tipoHardware . getValue ( ) = = null | | modelo . getValue ( ) = = null | | numSerieInt = = null | | numSerieInt . isEmpty ( ) | | placaInt = = null | | placaInt . isEmpty ( ) ) {
Notification . show ( "Por favor, completa todos los campos de hardware" , 4000 , Notification . Position . MIDDLE )
. addThemeVariants ( NotificationVariant . LUMO_WARNING ) ;
return ;
@ -660,9 +669,11 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
String destinatario = usuarioSeleccionado . getEmail ( ) ;
String asunto = "MANTENIMIENTO DE EQUIPO DE COMPUTO REALIZADO" ;
String cuerpo = "<html><body>"
+ "<img src='cid:image_id'/>"
+ "</body></html>" ;
String cuerpo = "<html>" +
"<body>" +
"<img src='cid:image_id'/>" +
"</body>" +
"</html>" ;
String imagePath = "src/main/resources/META-INF/resources/images/imgCorreo/correoMantt.png" ;