package locadora.modelo.DAO;

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

import javax.swing.JOptionPane;

import locadora.jdbc.ConnectionFactory;
import locadora.modelo.user.Cliente;

public class UserDAO {
	 private Connection connection;
	 
	   public UserDAO() throws SQLException{
		   this.connection=ConnectionFactory.getConnection();
	   }
	   
	   
	   public String remove(String nome){
		   String resposta="";
		   try{
		     	Connection con = ConnectionFactory.getConnection();
			         String sql;
			         sql = "select * from cliente where nome = ?";

			         PreparedStatement stm = con.prepareStatement(sql);
			         stm.setString(1,nome.toLowerCase());
		             
		             ResultSet rs = stm.executeQuery();

		       if (!rs.next()) {
		    	 resposta="O Nome informado não foi encontrado";
		         	
		       }
		       else{
		    	 sql = "delete from cliente where titulo = ?";

		         PreparedStatement stm2 = con.prepareStatement(sql);
		         stm2.setString(1,nome.toLowerCase());
		         stm2.execute();
		         
		         
		         resposta="Dados removidos com sucesso";
		       }
		       con.close();
		     }
		     catch(SQLException ex){
		 		System.out.println(ex.getMessage());
			        JOptionPane.showMessageDialog(null, ex.getMessage());
		 	}
		return resposta;

	   }
	   
	   
	   public void adiciona(Cliente cliente) throws SQLException{
		   PreparedStatement stmt = this.connection.prepareStatement("insert into cliente(nome,endereco,email,bonus,id) values(?,?,?,?,?)");
		   stmt.setString(1,cliente.getNome().toLowerCase());
		   stmt.setString(2,cliente.getEndereco());
		   stmt.setString(3,cliente.getEmail());
		   stmt.setInt(4,cliente.getBonus());
		   stmt.setInt(5,cliente.getId());
		   
		   stmt.execute();
		   stmt.close();
	   }
	   public List<Cliente> getLista()throws SQLException{
		   PreparedStatement stmt = this.connection.prepareStatement("select * from cliente");
		   ResultSet rs=stmt.executeQuery();
		   List<Cliente> clientes = new ArrayList<Cliente>();
		   while(rs.next()){
			   //criando o objeto contato
			   Cliente cliente = new Cliente();
			   cliente.setNome(rs.getString("nome"));
			   cliente.setEndereco(rs.getString("endereco"));
			   cliente.setSenha(rs.getString("senha"));
			   cliente.setEmail(rs.getString("email"));
			   cliente.setId(rs.getInt("id"));
			   
			   //adicionando contatos a lista
			   clientes.add(cliente);
		   }
	      rs.close();
	      
		return clientes;
	   }
	   
	   public Cliente verificaLogin(String email, String  senha){
		   
		   Cliente cliente = new Cliente();
		   try{
		     	Connection con = ConnectionFactory.getConnection();
			         String sql;
			         sql = "select * from cliente where senha = ? and email=?";

			         PreparedStatement stm = con.prepareStatement(sql);
			         stm.setString(1,senha.toLowerCase());
    		         stm.setString(2,email.toLowerCase());

		             ResultSet rs = stm.executeQuery();

		       if (!rs.next()) {
                  cliente=null;		         	
		       }
		       else{
				   cliente.setNome(rs.getString("nome"));
				   cliente.setEndereco(rs.getString("endereco"));
				   cliente.setSenha(rs.getString("senha"));
				   cliente.setEmail(rs.getString("email"));
				   cliente.setId(rs.getInt("id"));
		    	  
		       }
		       con.close();
		     }
		     catch(SQLException ex){
		 		System.out.println(ex.getMessage());
			        JOptionPane.showMessageDialog(null, ex.getMessage());
		 	}
		return cliente;
	   }
}
