107 lines
3.6 KiB
Java
107 lines
3.6 KiB
Java
package controlador;
|
|
|
|
import modelo.*;
|
|
import vista.VentaBoletosView;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.sql.*;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class VentaBoletosController {
|
|
private VentaBoletosView vista;
|
|
private Database database;
|
|
private List<JButton> botonesAsientos;
|
|
|
|
public VentaBoletosController(VentaBoletosView vista, Database database) {
|
|
this.vista = vista;
|
|
this.database = database;
|
|
this.botonesAsientos = new ArrayList<>();
|
|
|
|
cargarAsientos();
|
|
agregarListeners();
|
|
}
|
|
|
|
private void cargarAsientos() {
|
|
try {
|
|
Connection conexion = database.getConexion();
|
|
Statement stmt = conexion.createStatement();
|
|
ResultSet rs = stmt.executeQuery("SELECT * FROM asientos");
|
|
|
|
while (rs.next()) {
|
|
int numeroAsiento = rs.getInt("numero_asiento");
|
|
boolean disponible = rs.getBoolean("disponible");
|
|
|
|
JButton btnAsiento = new JButton(String.valueOf(numeroAsiento));
|
|
btnAsiento.setEnabled(disponible);
|
|
btnAsiento.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
venderAsiento(numeroAsiento);
|
|
}
|
|
});
|
|
|
|
botonesAsientos.add(btnAsiento);
|
|
vista.agregarBotonAsiento(btnAsiento);
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void venderAsiento(int numeroAsiento) {
|
|
try {
|
|
Connection conexion = database.getConexion();
|
|
PreparedStatement pstmt = conexion.prepareStatement("UPDATE asientos SET disponible = FALSE WHERE numero_asiento = ?");
|
|
pstmt.setInt(1, numeroAsiento);
|
|
pstmt.executeUpdate();
|
|
|
|
pstmt = conexion.prepareStatement("INSERT INTO ventas (fecha_venta, numero_asiento, precio) VALUES (NOW(), ?, ?)");
|
|
pstmt.setInt(1, numeroAsiento);
|
|
pstmt.setDouble(2, 100.00); // Precio fijo por simplicidad
|
|
pstmt.executeUpdate();
|
|
|
|
vista.mostrarMensaje("Boleto vendido: Asiento " + numeroAsiento);
|
|
actualizarBotones();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void actualizarBotones() {
|
|
for (JButton btn : botonesAsientos) {
|
|
btn.setEnabled(false);
|
|
}
|
|
vista.actualizarBotones();
|
|
}
|
|
|
|
private void generarReporte() {
|
|
try {
|
|
Connection conexion = database.getConexion();
|
|
Statement stmt = conexion.createStatement();
|
|
ResultSet rs = stmt.executeQuery("SELECT * FROM ventas");
|
|
|
|
StringBuilder reporte = new StringBuilder("Reporte de Ventas:\n");
|
|
while (rs.next()) {
|
|
reporte.append("Fecha: ").append(rs.getTimestamp("fecha_venta")).append(", ");
|
|
reporte.append("Asiento: ").append(rs.getInt("numero_asiento")).append(", ");
|
|
reporte.append("Precio: $").append(rs.getDouble("precio")).append("\n");
|
|
}
|
|
|
|
vista.mostrarMensaje(reporte.toString());
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void agregarListeners() {
|
|
vista.getBtnGenerarReporte().addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
generarReporte();
|
|
}
|
|
});
|
|
}
|
|
} |