Está en la página 1de 4

/*

* To change this license header, choose License Headers in Project Properties.


* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package app;

import com.dao.DaoUsuarios;
import com.dao.model.TBUsuario;
import com.nav.NavApp;
import com.tools.MyGlobal;
import java.net.URL;
import java.util.List;
import java.util.Optional;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;

/**
*
* @author kroksystem
*/
public class LoginController implements Initializable {

@FXML
private Button btnAceptar;
@FXML
private TextField tfPass, tfuser;

// Lista de usuarios
List<TBUsuario> usuarios;

@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO

// Inicializamos las variables globales.


MyGlobal.init();

// Obtenemos todos los usuarios


usuarios = new DaoUsuarios().getAll();

userEvents();

// Esta rutina es para mandar el foco al input... :)


Platform.runLater(() -> {
tfuser.requestFocus();
});
}
private void userEvents() {

tfuser.addEventFilter(KeyEvent.KEY_PRESSED, (KeyEvent event) -> {


switch (event.getCode()) {
case ESCAPE:
closeStage();
break;
case ENTER:
if (checkUser()) {
tfPass.requestFocus();
} else {
this.showAlert("Error", "Usuario no encontrado.", "");
tfuser.selectAll();
tfuser.requestFocus();
}
break;
case F1:
/* String cmd = tfuser.getText().trim();
switch (cmd) {
case "jdbc":
// Abrimos el modal de las credenciales para el
servidor
new
NavApp().displayJDBC(btnAceptar.getScene().getWindow());
// Obtenemos todos los usuarios
usuarios = new DaoWebUsuarios().getAll();
break;
}
tfuser.setText(""); */
break;
}
});

tfPass.addEventFilter(KeyEvent.KEY_PRESSED, (KeyEvent event) -> {


switch (event.getCode()) {
case ESCAPE:
closeStage();
break;
case ENTER:
if (checkUserAndPass()) {
closeStage();
new NavApp().displayDash(null);
} else {
this.showAlert("Error", "Contraseña no coincide.", "");
}
break;
}
});

btnAceptar.setOnMouseClicked((MouseEvent event) -> {

});
}

/**
* COn esta funcion verificamos si existe el usuario.
*
* @return
*/
private boolean checkUser() {

// Cojemos el usuario del campo


String user = tfuser.getText().trim();

// Verificamos si tiene datos


if (user.isEmpty()) {
tfuser.requestFocus();
tfuser.selectAll();
return false;
}

// Revizamos si existe algun usuario que concuerde con el nombre de usuario


ingresado.
Optional<TBUsuario> opt = usuarios.parallelStream().filter(p ->
user.equals(p.getUser())).findAny();

return opt.isPresent(); // Retornamos verdadero en caso de alguna


incidencia.
}

private boolean checkUserAndPass() {

// Cojemos el usuario del campo


String user = tfuser.getText().trim();
String pass = tfPass.getText().trim();

// Verificamos si tiene datos


if (pass.isEmpty()) {
tfPass.selectAll();
tfPass.requestFocus();
return false;
}

// Revizamos si existe algun usuario que concuerde con el nombre de usuario


ingresado.
Optional<TBUsuario> opt = usuarios.parallelStream().filter(p ->
user.equals(p.getUser()) && pass.equals(p.getPass())).findAny();

if (!opt.isPresent()) {
tfPass.selectAll();
tfPass.requestFocus();
return false;
}

// Cargamos el usuario a la variable global


MyGlobal.usuario = opt.get();

return true; // Retornamos verdadero en caso de alguna incidencia.


}

private Alert showAlert(String title, String header, String content) {


Alert alert = new Alert(Alert.AlertType.INFORMATION);
((Stage)
alert.getDialogPane().getScene().getWindow()).setAlwaysOnTop(true);
alert.setTitle(title);
alert.setHeaderText(header);
alert.setContentText(content);
alert.showAndWait();

return alert;
}

/**
* Función que cierra el stage.
*/
private void closeStage() {
((Stage) btnAceptar.getScene().getWindow()).close();
}
}