package examenes.examen20250509.controlador;

import examenes.examen20250509.modelo.Grupo;
import examenes.examen20250509.modelo.Sala;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class ControladorGrupo {
    public static List<Grupo> getAllGrupos() {
        Connection conn = GestorConexiones.getConnection();
        List<Grupo> grupos = new ArrayList<>();
        try {
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("select * from grupo");

            while (rs.next()) {
                grupos.add(new Grupo(
                        rs.getInt("id"),
                        rs.getString("nombre"),
                        rs.getString("estilo")
                ));
            }
            return grupos;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public static Grupo getGrupoById(int id) {
        Connection conn = GestorConexiones.getConnection();
        try {
            PreparedStatement pt = conn.prepareStatement("select * from grupo where id = ?");
            pt.setInt(1, id);
            ResultSet rs = pt.executeQuery();

            rs.next();

            return new Grupo(
                    rs.getInt("id"),
                    rs.getString("nombre"),
                    rs.getString("estilo")
            );


        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public static Object[] obtenerGrupoConMasConciertos() {
        Connection conn = GestorConexiones.getConnection();
        try {
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("select g.*, count(*) recuento from concierto c join grupo g on g.id = c.grupo_id group by id order by recuento desc limit 1");

            rs.next();

            return new Object[]{new Grupo(
                    rs.getInt("id"),
                    rs.getString("nombre"),
                    rs.getString("estilo")
            ), rs.getInt("recuento")};

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}
