/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package Vista;

/**
 *
 * @author mario
 */
import Modelo.conexion;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class panelAsientos extends JPanel {
    public conexion con;
    int DesignarId = 0;
    int Incremental = 1;

    private JLabel precioLabel;

    public panelAsientos(String zona) {
        setPreferredSize(new Dimension(737, 737));
        setLayout(null); // Ajusta el diseño a null para posicionar los componentes manualmente
        setBackground(Color.white);

        ImageIcon imageIcon = new ImageIcon("C:/Users/mario/OneDrive/Documentos/NetBeansProjects/Imagene/src/asdasdasdasd.png"); // Cambiar la ruta de la imagen
        JLabel imagenLabel = new JLabel(imageIcon);
        imagenLabel.setBounds(130, 10, imageIcon.getIconWidth(), imageIcon.getIconHeight());
        add(imagenLabel);
        JLabel asientoDisponibleDialogo = new JLabel("Asiento disponible");
        asientoDisponibleDialogo.setBounds(210, 5, 130, 50);
        add(asientoDisponibleDialogo);

        ImageIcon imageIcon2 = new ImageIcon("C:/Users/mario/OneDrive/Documentos/NetBeansProjects/Imagene/src/asiento seleccion.png"); // Cambiar la ruta de la imagen
        JLabel imagenLabel2 = new JLabel(imageIcon2);
        imagenLabel2.setBounds(330, 10, imageIcon.getIconWidth(), imageIcon.getIconHeight());
        add(imagenLabel2);
        JLabel asientoSeleccionadoDialogo = new JLabel("Asiento seleccionado");
        asientoSeleccionadoDialogo.setBounds(410, 5, 130, 50);
        add(asientoSeleccionadoDialogo);

        ImageIcon imageIcon3 = new ImageIcon("C:/Users/mario/OneDrive/Documentos/NetBeansProjects/Imagene/src/asiento noDisponible.png"); // Cambiar la ruta de la imagen
        JLabel imagenLabel3 = new JLabel(imageIcon3);
        imagenLabel3.setBounds(545, 10, imageIcon.getIconWidth(), imageIcon.getIconHeight());
        add(imagenLabel3);

        JLabel asientoNoDisponibleoDialogo = new JLabel("No Disponible");
        asientoNoDisponibleoDialogo.setBounds(630, 5, 130, 50);
        add(asientoNoDisponibleoDialogo);

        JLabel sala = new JLabel("" );
        sala.setBounds(210, 5, 130, 50);
        add(sala);

        precioLabel = new JLabel("Precio total: $0");
        precioLabel.setBounds(0, 70, 100, 30);
        add(precioLabel);

        int botonesACrear = 7;
        int posX = 30;
        int posY = 150;
        
        
        
        
        
        
        try {
            Connection connection = conexion.getInstance();
            PreparedStatement checkStatement = connection.prepareStatement("SELECT COUNT(*) as count FROM "+zona);
            ResultSet resultSet = checkStatement.executeQuery();
            resultSet.next();
            int count = resultSet.getInt("count");
            resultSet.close();
            checkStatement.close();

            if (count > 0) {
                // Si hay datos en la tabla, cargar los datos existentes
                PreparedStatement selectStatement = connection.prepareStatement("SELECT id, estado FROM "+zona);
                ResultSet rs = selectStatement.executeQuery();
                int contador = 0; // Contador para llevar el seguimiento de los botones creados
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String estado = rs.getString("estado");

                    BotonConImagen boton = new BotonConImagen(id);
                    boton.setBounds(posX, posY, 70, 70);
                    add(boton);

                    // Establecer el estado del botón según los datos recuperados de la base de datos
                    if (estado.equals("disponible")) {
                        boton.Disponible();
                    } else {
                        boton.Ocupado();
                    }

                    posX += 100;
                    contador++;

                    // Si se han creado 7 botones, hacer un salto
                    if (contador % 7 == 0) {
                        posX = 30;
                        posY += 100;
                    }
                }
                rs.close();
                selectStatement.close();
            } else {
                // Si no hay datos en la tabla, crear asientos nuevos
                for (int fila = 0; fila < 6; fila++) {
                    for (int i = 0; i < botonesACrear; i++) {
                        DesignarId = Incremental++;
                        BotonConImagen boton = new BotonConImagen(DesignarId);
                        boton.setBounds(posX, posY, 70, 70);
                        add(boton);

                        PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO "+zona+" (id, estado) VALUES (?, ?)");
                        insertStatement.setInt(1, DesignarId);
                        insertStatement.setString(2, "disponible");
                        insertStatement.executeUpdate();
                        insertStatement.close();

                        posX += 100;
                    }
                    posX = 30;
                    posY += 100;
                }
            }
        } catch (SQLException ex) {
            System.out.println("Error al interactuar con la base de datos: " + ex.getMessage());
        }

      


        JButton boton2 = new JButton("Comprar");
        boton2.setBounds(10, 10, 100, 30);
        boton2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int precioTotal = 0;
                Connection con = conexion.getInstance();
                for (Component component : getComponents()) {
                    if (component instanceof BotonConImagen) {
                        BotonConImagen boton = (BotonConImagen) component;
                        if (boton.isAmarillo()) {

                            try {

                                Connection connection = conexion.getInstance();
                                PreparedStatement statement = connection.prepareStatement("UPDATE "+zona+" SET estado = ? WHERE id = ?");
                                statement.setString(1, "ocupado");
                                statement.setInt(2, boton.getId());
                                statement.executeUpdate();
                                statement.close();

                                System.out.println("Comprando el asiento seleccionado con el numero " + boton.getId());

                                boton.Ocupado();

                                precioTotal += boton.getPrecio();
                            } catch (SQLException ex) {
                                System.out.println("Error al insertar el asiento en la base de datos: " + ex.getMessage());
                            }
                        }
                    }
                }
                precioLabel.setText("Precio total: $" + precioTotal);
            }
        });
        add(boton2);
    }
}
