This commit is contained in:
xFractu 2024-03-17 11:56:07 -06:00
parent 45a21fb60c
commit 6cec40596c
1 changed files with 177 additions and 0 deletions

View File

@ -0,0 +1,177 @@
/*
* 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);
}
}