package Datos;

import Modelo.CodClub;
import Modelo.Jornada;
import Modelo.Partido;
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 PartidoDB {

    public static Partido getPartido(String id_partido) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        String query = "SELECT * FROM PARTIDOS P "
                + "WHERE P.id_partido = ?";
        Partido partido = null;
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, id_partido);
            rs = ps.executeQuery();
            rs.next();
            String id_jornada = rs.getString("id_jornada");
            String id_club = rs.getString("id_club");
            String equipo1 = rs.getString("equipo1");
            String resultado_equipo1 = rs.getString("resultado_equipo1");
            String equipo2 = rs.getString("equipo2");
            String resultado_equipo2 = rs.getString("resultado_equipo2");
            Date fecha_partido = rs.getDate("fecha_partido");
            String hora_partido = rs.getString("hora_partido");
            String lugar_partido = rs.getString("lugar_partido");
            partido = new Partido(id_jornada, id_club, id_partido, equipo1, resultado_equipo1, equipo2, resultado_equipo2, fecha_partido, hora_partido, lugar_partido);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return partido;
    }
    
    public static ArrayList <String> getFechasJornada(String id_club) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        String query = "SELECT Distinct P.fecha_partido FROM PARTIDOS P "
                + " WHERE P.id_club = ? ";
        ArrayList <String> lista_fechas = new ArrayList<> ();
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, id_club);
            rs = ps.executeQuery();
            while(rs.next()){
                String fecha_asistencia = rs.getString("fecha_partido");
                lista_fechas.add(fecha_asistencia);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return lista_fechas;
    }

    public static boolean addPartido(Partido p) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "INSERT INTO PARTIDOS VALUES(?,?,?,?,?,?,?,?,?,?)";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, p.getId_partido());
            ps.setString(2, p.getId_jornada());
            ps.setString(3, p.getId_club());
            ps.setString(4, p.getEquipo1());
            ps.setString(5, p.getResultado_equipo1());
            ps.setString(6, p.getEquipo2());
            ps.setString(7, p.getResultado_equipo2());
            java.sql.Date sqlDate = new java.sql.Date(p.getFecha_partido().getTime());
            ps.setDate(8, sqlDate);
            ps.setString(9, p.getHora_partido());
            ps.setString(10, p.getLugar_partido());
            resultado = ps.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        cp.freeConnection(c);
        return resultado == 1;
    }
    
    public static boolean updatePartido(Partido p) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "UPDATE PARTIDOS "+   
                       "SET id_partido = ? ," +
                             " id_jornada = ? ,"+
                             " id_club = ? ,"+
                             " equipo1 = ? ,"+
                             " resultado_equipo1 = ? , "+
                             " equipo2 = ? ,"+
                             " resultado_equipo2 = ? ,"+
                             " fecha_partido = ? ,"+
                             " hora_partido = ? ,"+
                             " lugar_partido = ? "+
                       "WHERE id_partido = ? ";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, p.getId_partido());
            ps.setString(2, p.getId_jornada());
            ps.setString(3, p.getId_club());
            ps.setString(4, p.getEquipo1());
            ps.setString(5, p.getResultado_equipo1());
            ps.setString(6, p.getEquipo2());
            ps.setString(7, p.getResultado_equipo2());
            java.sql.Date sqlDate = new java.sql.Date(p.getFecha_partido().getTime());
            ps.setDate(8, sqlDate);
            ps.setString(9, p.getHora_partido());
            ps.setString(10, p.getLugar_partido());
            ps.setString(11, p.getId_partido());
            resultado = ps.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        cp.freeConnection(c);
        return resultado == 1;
    }
}
