From 6cec40596c36199ad1229fc59f293cb80b35f116 Mon Sep 17 00:00:00 2001 From: xFractu Date: Sun, 17 Mar 2024 11:56:07 -0600 Subject: [PATCH] avance 5 --- .../src/Vista/panelAsientos.java | 177 ++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 ProyectoConciertoApp/src/Vista/panelAsientos.java diff --git a/ProyectoConciertoApp/src/Vista/panelAsientos.java b/ProyectoConciertoApp/src/Vista/panelAsientos.java new file mode 100644 index 0000000..f0b0b71 --- /dev/null +++ b/ProyectoConciertoApp/src/Vista/panelAsientos.java @@ -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); + } +}