package View;

import java.net.URL;
import java.util.Enumeration;
import java.util.List;
import java.util.ResourceBundle;

import DAO.DAO;
//import Model.Usuarios;
import java.io.IOException;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
//import telas.Login;

//import telas.Principal;

public class LoginController implements Initializable {

	
	@FXML
	private Button BtSair;

	@FXML
	private Button btEntrar;

	@FXML
	private PasswordField txSenha;

	@FXML
	private TextField txEmail;

	@FXML
	private void btOnActionEntrar() {
		logar();
	}

	@FXML
	private void btOnActionSair() {
		fechar();
	}

	@Override
	public void initialize(URL location, ResourceBundle resources) {
	}

	public void fechar() {
		Login.getStage().close();
	}

	
	
	
	Long id;
	
	
	public void logar() {
		DAO<Usuarios> dao = new DAO<Usuarios>(Usuarios.class);
		List<Usuarios> users = dao.obterTodos();

		for (int i = 0; i < users.size(); i++) {

			if (txEmail.getText().equals(users.get(i).getEmail()) && txSenha.getText().equals(users.get(i).getSenha())) {
				id = users.get(i).getId();
				//Principal p = new Principal();
				i = users.size();
				fechar();
				try {
					//p.start(new Stage());
                                        AbreJanela(id);   //Aqui, você chama o novo método criado (está logo abaixo desse método "logar") e passa para ele o ID do usuário
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			} else {
				if(i == users.size()-1) {
					Alert alert = new Alert(AlertType.ERROR);
					alert.setTitle("Erro");
					alert.setHeaderText("Login Invalido");
					alert.setContentText("O Erro aconteceu devido ao usuario ser invalido");
					alert.show();
					
				}else {
					System.out.println("");
				}
			}

		}

	}
        
        
        
    
    //Esse é o novo método, que eu pedi que você criasse.
    //Ele abre uma nova janela e passa para ela, o código (tipo Long), que você colocar no seu argumento
    private void AbreJanela(Long codUsuario) 
    {
        
        try
        {
            final Stage janela = new Stage();
            janela.setTitle ("MENU PRINCIPAL");  //***
            
            //Como alguns dados têm que ser passados para o formulário a ser aberto,
            //deve-se criar um ResourceBundle
            ResourceBundle rbJanela = new ResourceBundle(){
                @Override
                protected Object handleGetObject(String key)  //A string 'key' será captada no método INITIALIZE da janela que será aberta 
                {
                    if (key.contains("idUsuario"))  //*** Se sua nova janela procurar pela chave 'idUsuario' 
                    {
                        return String.valueOf(codUsuario);  //*** vai ter o retorno do texto, contido nesta variável
                    }                                          //OBS: o retorno deve ser sempre uma STRING
                    else      //Caso a janela não procure por nenhuma chave, retorna-se NULL
                    {
                        return null;
                    }
                }

                @Override
                public Enumeration<String> getKeys() {
                    throw new UnsupportedOperationException("Not supported yet."); 
                }
                
            
            };
            //Nesse ponto o ResourceBundle é passado para o formulário a ser aberto
            FXMLLoader carregador = new FXMLLoader(getClass().getResource("/telas/Principal.fxml"), rbJanela); //*** A string "/telas/Principal.fxml" refere-se ao local do seu arquivo fxml (pacotes + arquivo fxml). Observe que existe uma BARRA "/" antes de todos os nomes: mantenha essa barra antes de todos os nomes.
            
            Parent parent = (Parent)carregador.load();

            //*** "JanelaController" é o nome do arquivo de controle da sua janela (mude, de acordo com o nome do arquivo de controle da sua nova janela) 
            PrincipalController controleDaJanela = carregador.getController();

            Scene scene; 
            scene = new Scene(parent);
            janela.setScene(scene);
            janela.show();
            
        }catch (Exception exc){
            exc.printStackTrace();
            System.out.println("EXCEÇÃO!");
        }
    }
        
        
        
        
        
        
        
        
        
        
}
