package br.dsc.upe.poli.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;

import br.dsc.upe.poli.banco.ConexaoFactory;
import br.dsc.upe.poli.basicas.Aluno;
import br.dsc.upe.poli.basicas.Atividade;

public class AlunoDAO {

	private Connection connection;

	public AlunoDAO() throws ClassNotFoundException, SQLException {
		this.connection = new ConexaoFactory().getConexao();
	}

	public void cadastrar(Aluno aluno) throws SQLException {
		PreparedStatement stmt;
		stmt = connection
				.prepareStatement("INSERT INTO ALUNOS_TABLE (nome_aluno, idade_aluno, turma_aluno, identidade_aluno) VALUES (?,?,?,?)");
		stmt.setString(1, aluno.getNome());
		stmt.setString(2, aluno.getIdade());
		stmt.setString(3, aluno.getTurma());
		stmt.setString(4, aluno.getIdentidade());
		stmt.execute();
		stmt.close();

		PreparedStatement stmt1 = connection.prepareStatement("INSERT INTO VALIDACAO_TABLE (login, senha, identidade,tipo_usuario) VALUES (?,?,?,?)");
		stmt1.setString(1, aluno.getLogin());
		stmt1.setString(2, aluno.getSenha());
		stmt1.setString(3,aluno.getIdentidade());
		stmt1.setString(4,"ALUNO");
		stmt1.execute();
		stmt1.close();
		
		
	}

	
	
	public void cadastrarAluno(Aluno aluno) throws SQLException {
		PreparedStatement stmt;
		stmt = connection
				.prepareStatement("INSERT INTO ALUNOS_TABLE (nome_aluno, idade_aluno, turma_aluno, identidade_aluno) VALUES (?,?,?,?)");
		stmt.setString(1, aluno.getNome());
		stmt.setString(2, aluno.getIdade());
		stmt.setString(3, aluno.getTurma());
		stmt.setString(4, aluno.getIdentidade());
		stmt.execute();
		stmt.close();

			}

	
	
	
	public  void atualizar(Aluno aluno) throws SQLException {
		PreparedStatement stmt;
		stmt = connection
				.prepareStatement("UPDATE ALUNOS_TABLE SET nome_aluno = ?, idade_aluno = ?, turma_aluno = ? WHERE identidade_aluno = ?");
		stmt.setString(1, aluno.getNome());
		stmt.setString(2, aluno.getIdade());
		stmt.setString(3, aluno.getTurma());
		stmt.setString(4, aluno.getIdentidade());
		stmt.executeUpdate();
		stmt.close();

		
	}

	public void remover(Aluno aluno) throws SQLException {
		PreparedStatement stmt;
		stmt = connection
				.prepareStatement("DELETE FROM ALUNOS_TABLE  WHERE identidade_aluno = ?");
		stmt.setString(1, aluno.getIdentidade());
		stmt.execute();
		stmt.close();


	}

	public Aluno buscar(Aluno aluno) throws SQLException {

		PreparedStatement stmt = connection
				.prepareStatement("SELECT * FROM ALUNOS_TABLE WHERE IDENTIDADE_ALUNO = ?");
		stmt.setString(1, aluno.getIdentidade());
		ResultSet rs = stmt.executeQuery();
		Aluno alunoprocurado = new Aluno();
		while (rs.next()) {
			alunoprocurado.setNome(rs.getString("nome_aluno"));
			alunoprocurado.setIdade(rs.getString("idade_aluno"));
			alunoprocurado.setTurma(rs.getString("turma_aluno"));
			alunoprocurado.setIdentidade(rs.getString("identidade_aluno"));

		}
		stmt.close();
		rs.close();
		return alunoprocurado;

	}
	
	
	public HashMap<String,ArrayList<Aluno>> buscarGeral(String nome, String identidade, String turma) throws SQLException {

		PreparedStatement stmt = connection
				.prepareStatement("SELECT * FROM ALUNOS_TABLE WHERE IDENTIDADE_ALUNO = ? OR TURMA_ALUNO = ? OR NOME_ALUNO =? ");
		stmt.setString(1, identidade);
		stmt.setString(2, turma);
		stmt.setString(3, nome);
		
		ResultSet rs = stmt.executeQuery();
		ArrayList<Aluno> alunos = new ArrayList<Aluno>();
		HashMap<String, ArrayList<Aluno>> hashalunos = new HashMap<String, ArrayList<Aluno>>();
		while (rs.next()) {
			Aluno aluno = new Aluno();
			aluno.setNome(rs.getString("nome_aluno"));
			aluno.setIdade(rs.getString("idade_aluno"));
			aluno.setTurma(rs.getString("turma_aluno"));
			aluno.setIdentidade(rs.getString("identidade_aluno"));
			
			alunos.add(aluno);
		}
		hashalunos.put("ALU", alunos);
		stmt.close();
		rs.close();
		return hashalunos;

	}

	
	
	public boolean buscarIdentidade(String ident) throws SQLException {

		PreparedStatement stmt = connection
				.prepareStatement("SELECT identidade_aluno FROM ALUNOS_TABLE WHERE IDENTIDADE_ALUNO = ?");
		stmt.setString(1, ident);
		ResultSet rs = stmt.executeQuery();
		boolean resp = false;
		while (rs.next()) {
			resp = true;

		}
		stmt.close();
		rs.close();
		return resp;

	}
	
	
	public Aluno buscar(String login) throws SQLException {

		PreparedStatement stmt = connection
				.prepareStatement("SELECT * FROM ALUNOS_TABLE WHERE identidade_aluno = (SELECT identidade FROM validacao_table where login = ?)");
		stmt.setString(1, login);
		ResultSet rs = stmt.executeQuery();
		Aluno alunoprocurado = new Aluno();
		while (rs.next()) {
			alunoprocurado.setNome(rs.getString("nome_aluno"));
			alunoprocurado.setIdade(rs.getString("idade_aluno"));
			alunoprocurado.setTurma(rs.getString("turma_aluno"));
			alunoprocurado.setIdentidade(rs.getString("identidade_aluno"));

		}
		PreparedStatement stmt1 = connection.prepareStatement("SELECT * FROM VALIDACAO_TABLE WHERE login = ?");
		stmt1.setString(1, login);
		ResultSet rs1 = stmt1.executeQuery();

		while (rs1.next()) {
			alunoprocurado.setLogin(login);
			alunoprocurado.setSenha(rs1.getString("senha"));
			
		}
		
		stmt.close();
		stmt1.close();
		rs.close();
		rs1.close();
		return alunoprocurado;

	}
	
	
	


	public static void main(String[] args) throws ClassNotFoundException, SQLException{
		Aluno a = new Aluno("CAU","34","telesala","737373");

		AlunoDAO alunodao =  new AlunoDAO();

		alunodao.cadastrar(a);

	}
	
}
