package Datos;

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

public class CodCategoriaEjercicioDB {

    public static CodCategoriaEjercicio getCodCategoriaEjercicio(String codCategoriaEjercicio) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        CodCategoriaEjercicio cod_categoria_ejercicio = null;
        String query = "SELECT * FROM COD_CATEGORIA_EJERCICIO cce "
                + "WHERE cce.cod_categoria_ejer = ?";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, codCategoriaEjercicio);
            rs = ps.executeQuery();
            rs.next();
            String descripcion_categoria_ejercicio = rs.getString("descripcion_categoria_ejer");
            cod_categoria_ejercicio = new CodCategoriaEjercicio(codCategoriaEjercicio, descripcion_categoria_ejercicio);
            
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return cod_categoria_ejercicio;
    }
    
    public static ArrayList <CodCategoriaEjercicio> getCategorias(){
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        ArrayList <CodCategoriaEjercicio> categorias = new ArrayList<>();
        @SuppressWarnings("UnusedAssignment")
        CodCategoriaEjercicio codCategoriaEjercicio = null;
        String query = "SELECT * FROM COD_CATEGORIA_EJERCICIO cce ";
        try {
            ps = c.prepareStatement(query);
            rs = ps.executeQuery();
            while(rs.next()){
                String cod_categoria_ejercicio = rs.getString("cod_categoria_ejer");
                String descripcion_categoria_ejercicio = rs.getString("descripcion_categoria_ejer");
                codCategoriaEjercicio = new CodCategoriaEjercicio(cod_categoria_ejercicio, descripcion_categoria_ejercicio);
                categorias.add(codCategoriaEjercicio);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return categorias;
    }

    public static boolean addConcepto(CodCategoriaEjercicio cod_categoria_ejercicio) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "INSERT INTO COD_CATEGORIA_EJERCICIO VALUES(?,?)";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, cod_categoria_ejercicio.getCod_categoria_ejer());
            ps.setString(2, cod_categoria_ejercicio.getDescripcion_categoria_ejer());
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return resultado == 1;
    }
    
    public static boolean updateConcepto(CodCategoriaEjercicio cod_categoria_ejercicio) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "UPDATE COD_CATEGORIA_EJERCICIO "+   
                       "SET cod_categoria_ejer = ? ,"+
                             " descripcion_categoria_ejer = ? "+
                       "WHERE cod_categoria_ejer = ?";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, cod_categoria_ejercicio.getCod_categoria_ejer());
            ps.setString(2, cod_categoria_ejercicio.getDescripcion_categoria_ejer());
            ps.setString(3, cod_categoria_ejercicio.getCod_categoria_ejer());
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return resultado == 1;
    }
}
