package Datos;

import Modelo.Jugador;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;

public class JugadorDB {

    public static Jugador getJugador(String id_jugador) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        String query = "SELECT * FROM JUGADORES J "
                + "WHERE J.id_jugador = ?";
        Jugador jugador = null;
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, id_jugador);
            rs = ps.executeQuery();
            rs.next();
            String id_equipo = rs.getString("id_equipo");
            String nombre_jugador = rs.getString("nombre_jugador");
            String apellidos_jugador = rs.getString("apellidos_jugador");
            String direccion_jugador = rs.getString("direccion_jugador");
            Date fecha_nacimiento = rs.getDate("fecha_nacimiento");
            jugador = new Jugador(id_jugador,id_equipo, nombre_jugador, apellidos_jugador, direccion_jugador, fecha_nacimiento);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return jugador;
    }
    
    public static ArrayList<Jugador> getJugadoresEquipo(String id_equipo) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        ArrayList <Jugador> lista_jugadores = new ArrayList <>();
        String query = "SELECT * FROM Jugadores j "
                + "WHERE j.id_equipo = ? ";
        Jugador jugador = null;
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, id_equipo);
            rs = ps.executeQuery();
            while(rs.next()){
                String id_jugador = rs.getString("id_jugador");
                String nombre = rs.getString("nombre");
                String apellidos = rs.getString("apellidos");
                String direccion = rs.getString("direccion");
                Date fecha_nacimiento = rs.getDate("fecha_nacimiento");
                jugador = new Jugador(id_jugador,id_equipo, nombre, apellidos, direccion,fecha_nacimiento);
                lista_jugadores.add(jugador);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return lista_jugadores;
    }
    
    

    public static boolean addJugador(Jugador j) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "INSERT INTO JUGADORES VALUES(?,?,?,?,?,?)";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, j.getId_jugador());
            ps.setString(2, j.getId_equipo());
            ps.setString(3, j.getNombre_jugador());
            ps.setString(4, j.getApellidos_jugador());
            ps.setString(5, j.getDireccion_jugador());
            java.sql.Date sqlDate = new java.sql.Date(j.getFecha_nacimiento().getTime());
            ps.setDate(6, sqlDate);
            resultado = ps.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        cp.freeConnection(c);
        return resultado == 1;
    }
    
    public static boolean updateJugador(Jugador j) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "UPDATE JUGADORES "+   
                       "SET  id_jugador = ? , " +
                             " id_equipo = ? ,"+
                             " nombre = ? ,"+
                             " apellidos = ? ,"+
                             " direccion = ? , "+
                             " fecha_nacimiento = ? "+
                       "WHERE id_jugador = ?";
                             
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, j.getId_jugador());
            ps.setString(2, j.getId_equipo());
            ps.setString(3, j.getNombre_jugador());
            ps.setString(4, j.getApellidos_jugador());
            ps.setString(5, j.getDireccion_jugador());
            java.sql.Date sqlDate = new java.sql.Date(j.getFecha_nacimiento().getTime());
            ps.setDate(6, sqlDate);
            ps.setString(7, j.getId_jugador());
            resultado = ps.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        cp.freeConnection(c);
        return resultado == 1;
    }
    
    public static boolean borrarJugador(String id_jugador) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "DELETE FROM JUGADORES "+   
                       "WHERE id_jugador = ?";    
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, id_jugador);
            resultado = ps.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        cp.freeConnection(c);
        return resultado == 1;
    }
}
