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.filmes.Filme;


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

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

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

	         PreparedStatement stm2 = con.prepareStatement(sql);
	         stm2.setString(1,titulo.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(Filme filme) throws SQLException{
	   PreparedStatement stmt = this.connection.prepareStatement("insert into filme(titulo,descricao,genero) values(?,?,?)");
	   stmt.setString(1,filme.getTitulo().toLowerCase());
	   stmt.setString(2,filme.getDescricao());
	   stmt.setString(3,filme.getGenero());
	   
	   stmt.execute();
	   stmt.close();
   }
   public List<Filme> getLista()throws SQLException{
	   PreparedStatement stmt = this.connection.prepareStatement("select * from filme");
	   ResultSet rs=stmt.executeQuery();
	   List<Filme> filmes = new ArrayList<Filme>();
	   while(rs.next()){
		   //criando o objeto contato
		   Filme filme = new Filme();
		   filme.setDescricao(rs.getString("descricao"));
		   filme.setGenero(rs.getString("genero"));
		   filme.setTitulo(rs.getString("titulo"));
		   //adicionando contatos a lista
		   filme.setImagem(rs.getString("localImagem"));

		   filmes.add(filme);
	   }
      rs.close();
      
	return filmes;
   }
   
   public List<Filme> selecionaFilmePorNome(String nomeProcurado)throws SQLException{
	   PreparedStatement stmt = this.connection.prepareStatement("select * from filme where titulo like ?");
	   stmt.setString(1,"%"+nomeProcurado+"%");
	   ResultSet rs=stmt.executeQuery();
	   
	   List<Filme> filmes = new ArrayList<Filme>();
	   while(rs.next()){
		   //criando o objeto contato
		   Filme filme = new Filme();
		   filme.setDescricao(rs.getString("descricao"));
		   filme.setGenero(rs.getString("genero"));
		   filme.setTitulo(rs.getString("titulo"));
		   //adicionando contatos a lista
		   filme.setImagem(rs.getString("localImagem"));

		   filmes.add(filme);
	   }
      rs.close();
      
	return filmes;
   }
}
