Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
|
a68b9839f5 | |
|
da49c89d15 |
|
@ -5,7 +5,6 @@
|
||||||
<option name="originalFiles">
|
<option name="originalFiles">
|
||||||
<list>
|
<list>
|
||||||
<option value="$PROJECT_DIR$/pom.xml" />
|
<option value="$PROJECT_DIR$/pom.xml" />
|
||||||
<option value="$PROJECT_DIR$/pom.xml" />
|
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
|
|
@ -2,6 +2,5 @@
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="" vcs="Git" />
|
<mapping directory="" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -13,6 +13,7 @@ import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import javafx.scene.control.ButtonType;
|
import javafx.scene.control.ButtonType;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.Date;
|
import java.sql.Date;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
|
@ -25,9 +26,9 @@ import java.util.List;
|
||||||
|
|
||||||
public class EscogerEvento {
|
public class EscogerEvento {
|
||||||
// Datos de conexión a la base de datos
|
// Datos de conexión a la base de datos
|
||||||
private static final String DB_URL = "jdbc:mysql://localhost:3306/bookticket";
|
private static final String DB_URL = "jdbc:mysql://sql10.freesqldatabase.com:3306/sql10766655";
|
||||||
private static final String DB_USER = "root";
|
private static final String DB_USER = "sql10766655";
|
||||||
private static final String DB_PASSWORD = "";
|
private static final String DB_PASSWORD = "7BZbRjEkXZ";
|
||||||
|
|
||||||
// Método para mostrar la ventana de selección de eventos
|
// Método para mostrar la ventana de selección de eventos
|
||||||
public void mostrarVentanaSeleccionEvento(Stage mainStage, VentaBoletos ventaBoletos) {
|
public void mostrarVentanaSeleccionEvento(Stage mainStage, VentaBoletos ventaBoletos) {
|
||||||
|
@ -184,10 +185,10 @@ public class EscogerEvento {
|
||||||
alert.showAndWait().ifPresent(response -> {
|
alert.showAndWait().ifPresent(response -> {
|
||||||
if (response == buttonTypePDF) {
|
if (response == buttonTypePDF) {
|
||||||
// Generar el PDF del reporte usando la clase PDFGenerator
|
// Generar el PDF del reporte usando la clase PDFGenerator
|
||||||
String qrImagePath = "src/main/resources/qrcode.png"; // Cambia esto por la ruta de tu imagen QR
|
InputStream qrImageStream = getClass().getResourceAsStream("/qrcode.png"); // Cambia esto por la ruta de tu imagen QR
|
||||||
String timestamp = new java.text.SimpleDateFormat("yyyy-MM-dd HH_mm").format(new java.util.Date());
|
String timestamp = new java.text.SimpleDateFormat("yyyy-MM-dd HH_mm").format(new java.util.Date());
|
||||||
String pdfFileName = "Reporte_"+eventName.replace(" ", "_")+"_" + timestamp + ".pdf";
|
String pdfFileName = "Reporte_"+eventName.replace(" ", "_")+"_" + timestamp + ".pdf";
|
||||||
PDFGenerator.generarPDF(eventName, "", "", 0.0, qrImagePath, String.join("\n", seatDetails), pdfFileName);
|
PDFGenerator.generarPDF(eventName, "", "", 0.0, qrImageStream, String.join("\n", seatDetails), pdfFileName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package org.example.saladeconciertos;
|
package org.example.saladeconciertos;
|
||||||
|
|
||||||
import javafx.scene.text.Font;
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||||
|
@ -9,11 +8,12 @@ import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
|
||||||
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
public class PDFGenerator {
|
public class PDFGenerator {
|
||||||
|
|
||||||
// Método para generar un PDF con los detalles del reporte de ventas
|
// Método para generar un PDF con los detalles del reporte de ventas
|
||||||
public static void generarPDF(String eventName, String eventDate, String clientName, double totalPrice, String qrImagePath, String ticketDetails, String pdfFileName) {
|
public static void generarPDF(String eventName, String eventDate, String clientName, double totalPrice, InputStream qrImageStream, String ticketDetails, String pdfFileName) {
|
||||||
// Ruta donde se guardará el PDF
|
// Ruta donde se guardará el PDF
|
||||||
String downloadsPath = System.getProperty("user.home") + "/Downloads/";
|
String downloadsPath = System.getProperty("user.home") + "/Downloads/";
|
||||||
String pdfPath = downloadsPath + pdfFileName;
|
String pdfPath = downloadsPath + pdfFileName;
|
||||||
|
@ -22,46 +22,52 @@ public class PDFGenerator {
|
||||||
// Crear una nueva página
|
// Crear una nueva página
|
||||||
PDPage page = new PDPage();
|
PDPage page = new PDPage();
|
||||||
document.addPage(page);
|
document.addPage(page);
|
||||||
PDType1Font fontbold = new PDType1Font(Standard14Fonts.FontName.HELVETICA_BOLD);
|
|
||||||
PDType1Font font = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
|
|
||||||
|
|
||||||
// Crear un flujo de contenido para la página
|
// Crear un flujo de contenido para la página
|
||||||
try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
|
try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
|
||||||
// Configurar la fuente y el tamaño para el título del evento
|
// Configurar la fuente y el tamaño para el título del evento
|
||||||
contentStream.setFont(fontbold, 24);
|
PDType1Font fontBold = new PDType1Font(Standard14Fonts.FontName.HELVETICA_BOLD);
|
||||||
|
contentStream.setFont(fontBold, 24);
|
||||||
contentStream.beginText();
|
contentStream.beginText();
|
||||||
contentStream.newLineAtOffset(50, 750);
|
contentStream.newLineAtOffset(50, 750);
|
||||||
contentStream.showText(eventName);
|
contentStream.showText(eventName);
|
||||||
contentStream.endText();
|
contentStream.endText();
|
||||||
|
|
||||||
// Configurar la fuente y el tamaño para la fecha del evento
|
// Configurar la fuente y el tamaño para la fecha del evento
|
||||||
contentStream.setFont(fontbold, 18);
|
contentStream.setFont(fontBold, 18);
|
||||||
contentStream.beginText();
|
contentStream.beginText();
|
||||||
contentStream.newLineAtOffset(50, 720);
|
contentStream.newLineAtOffset(50, 720);
|
||||||
|
contentStream.showText(eventDate);
|
||||||
contentStream.endText();
|
contentStream.endText();
|
||||||
|
|
||||||
// Configurar la fuente y el tamaño para el contenido del reporte
|
// Configurar la fuente y el tamaño para el contenido del reporte
|
||||||
contentStream.setFont(font, 12);
|
PDType1Font fontRegular = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
|
||||||
|
contentStream.setFont(fontRegular, 12);
|
||||||
contentStream.beginText();
|
contentStream.beginText();
|
||||||
float textY = 680;
|
float textY = 680; // Posición Y inicial del contenido
|
||||||
contentStream.newLineAtOffset(50, textY);
|
contentStream.newLineAtOffset(50, textY);
|
||||||
|
|
||||||
// Dividir el texto en líneas y escribir cada línea por separado
|
// Dividir el texto en líneas y escribir cada línea por separado
|
||||||
String[] lines = ticketDetails.split("\n");
|
String[] lines = ticketDetails.split("\n");
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
contentStream.showText(line);
|
contentStream.showText(line);
|
||||||
textY -= 15;
|
textY -= 15; // Mover hacia abajo para la siguiente línea
|
||||||
contentStream.newLineAtOffset(0, -15); // Mover hacia abajo para la siguiente línea
|
contentStream.newLineAtOffset(0, -15);
|
||||||
}
|
}
|
||||||
|
|
||||||
contentStream.endText();
|
contentStream.endText();
|
||||||
|
|
||||||
|
// Calcular la posición Y de la imagen (teniendo en cuenta su altura)
|
||||||
float imageHeight = 150; // Altura de la imagen
|
float imageHeight = 150; // Altura de la imagen
|
||||||
float imageY = textY - 50 - imageHeight; // 50 unidades de margen + altura de la imagen
|
float imageY = textY - 50 - imageHeight; // 50 unidades de margen + altura de la imagen
|
||||||
|
|
||||||
// Agregar la imagen del código QR (si existe)
|
// Agregar la imagen del código QR (si existe)
|
||||||
if (qrImagePath != null && !qrImagePath.isEmpty()) {
|
if (qrImageStream != null) {
|
||||||
PDImageXObject qrImage = PDImageXObject.createFromFile(qrImagePath, document);
|
try {
|
||||||
contentStream.drawImage(qrImage, 50, imageY, 150, 150); // Ajusta la posición y el tamaño de la imagen
|
PDImageXObject qrImage = PDImageXObject.createFromByteArray(document, qrImageStream.readAllBytes(), "qrcode");
|
||||||
|
contentStream.drawImage(qrImage, 50, imageY, 150, 150); // Ajusta la posición y el tamaño
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Error al cargar la imagen QR: " + e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +81,7 @@ public class PDFGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Método para generar un PDF con los detalles del ticket de compra
|
// Método para generar un PDF con los detalles del ticket de compra
|
||||||
public static void generarTicketPDF(String eventName, String eventDate, String clientName, double totalPrice, String qrImagePath, String ticketDetails, String pdfFileName) {
|
public static void generarTicketPDF(String eventName, String eventDate, String clientName, double totalPrice, InputStream qrImageStream, String ticketDetails, String pdfFileName) {
|
||||||
// Ruta donde se guardará el PDF
|
// Ruta donde se guardará el PDF
|
||||||
String downloadsPath = System.getProperty("user.home") + "/Downloads/";
|
String downloadsPath = System.getProperty("user.home") + "/Downloads/";
|
||||||
String pdfPath = downloadsPath + pdfFileName;
|
String pdfPath = downloadsPath + pdfFileName;
|
||||||
|
@ -84,36 +90,45 @@ public class PDFGenerator {
|
||||||
// Crear una nueva página
|
// Crear una nueva página
|
||||||
PDPage page = new PDPage();
|
PDPage page = new PDPage();
|
||||||
document.addPage(page);
|
document.addPage(page);
|
||||||
PDType1Font fontbold = new PDType1Font(Standard14Fonts.FontName.HELVETICA_BOLD);
|
|
||||||
PDType1Font font = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
|
|
||||||
|
|
||||||
// Crear un flujo de contenido para la página
|
// Crear un flujo de contenido para la página
|
||||||
try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
|
try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
|
||||||
// Configurar la fuente y el tamaño para el título
|
// Configurar la fuente y el tamaño para el título
|
||||||
contentStream.setFont(fontbold, 20);
|
PDType1Font fontBold = new PDType1Font(Standard14Fonts.FontName.HELVETICA_BOLD);
|
||||||
|
contentStream.setFont(fontBold, 20);
|
||||||
contentStream.beginText();
|
contentStream.beginText();
|
||||||
contentStream.newLineAtOffset(50, 750);
|
contentStream.newLineAtOffset(50, 750);
|
||||||
contentStream.showText("Ticket de Compra");
|
contentStream.showText("Ticket de Compra");
|
||||||
contentStream.endText();
|
contentStream.endText();
|
||||||
|
|
||||||
// Configurar la fuente y el tamaño para el contenido
|
// Configurar la fuente y el tamaño para el contenido
|
||||||
contentStream.setFont(font, 12);
|
PDType1Font fontRegular = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
|
||||||
|
contentStream.setFont(fontRegular, 12);
|
||||||
contentStream.beginText();
|
contentStream.beginText();
|
||||||
contentStream.newLineAtOffset(50, 700);
|
float textY = 700; // Posición Y inicial del contenido
|
||||||
|
contentStream.newLineAtOffset(50, textY);
|
||||||
|
|
||||||
// Dividir el texto en líneas y escribir cada línea por separado
|
// Dividir el texto en líneas y escribir cada línea por separado
|
||||||
String[] lines = ticketDetails.split("\n");
|
String[] lines = ticketDetails.split("\n");
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
contentStream.showText(line);
|
contentStream.showText(line);
|
||||||
contentStream.newLineAtOffset(0, -15); // Mover hacia abajo para la siguiente línea
|
textY -= 15; // Mover hacia abajo para la siguiente línea
|
||||||
|
contentStream.newLineAtOffset(0, -15);
|
||||||
}
|
}
|
||||||
|
|
||||||
contentStream.endText();
|
contentStream.endText();
|
||||||
|
|
||||||
|
// Calcular la posición Y de la imagen (teniendo en cuenta su altura)
|
||||||
|
float imageHeight = 150; // Altura de la imagen
|
||||||
|
float imageY = textY - 50 - imageHeight; // 50 unidades de margen + altura de la imagen
|
||||||
|
|
||||||
// Agregar la imagen del código QR
|
// Agregar la imagen del código QR
|
||||||
if (qrImagePath != null && !qrImagePath.isEmpty()) {
|
if (qrImageStream != null) {
|
||||||
PDImageXObject qrImage = PDImageXObject.createFromFile(qrImagePath, document);
|
try {
|
||||||
contentStream.drawImage(qrImage, 50, 50, 150, 150); // Ajusta la posición y el tamaño de la imagen
|
PDImageXObject qrImage = PDImageXObject.createFromByteArray(document, qrImageStream.readAllBytes(), "qrcode");
|
||||||
|
contentStream.drawImage(qrImage, 50, imageY, 150, 150); // Ajusta la posición y el tamaño
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Error al cargar la imagen QR: " + e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,6 @@ import javafx.scene.layout.BorderPane;
|
||||||
import javafx.scene.layout.GridPane;
|
import javafx.scene.layout.GridPane;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.text.Font;
|
|
||||||
import javafx.scene.text.TextAlignment;
|
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
@ -26,9 +24,9 @@ import java.sql.SQLException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class VentaBoletos extends Application {
|
public class VentaBoletos extends Application {
|
||||||
private static final String DB_URL = "jdbc:mysql://localhost:3306/bookticket";
|
private static final String DB_URL = "jdbc:mysql://sql10.freesqldatabase.com:3306/sql10766655";
|
||||||
private static final String DB_USER = "root";
|
private static final String DB_USER = "sql10766655";
|
||||||
private static final String DB_PASSWORD = "";
|
private static final String DB_PASSWORD = "7BZbRjEkXZ";
|
||||||
private List<Integer> selectedSeats = new ArrayList<>();
|
private List<Integer> selectedSeats = new ArrayList<>();
|
||||||
private Map<Integer, Double> seatPrices = new HashMap<>();
|
private Map<Integer, Double> seatPrices = new HashMap<>();
|
||||||
private String eventName = "";
|
private String eventName = "";
|
||||||
|
@ -122,12 +120,12 @@ public class VentaBoletos extends Application {
|
||||||
int row = (seatNumber - 1) / cols;
|
int row = (seatNumber - 1) / cols;
|
||||||
int col = (seatNumber - 1) % cols;
|
int col = (seatNumber - 1) % cols;
|
||||||
char rowLetter = (char) ('A' + row);
|
char rowLetter = (char) ('A' + row);
|
||||||
String seatLabel = rowLetter + String.valueOf(col + 1)+"\n$"+seatPrices.get(seatNumber);
|
String seatLabel = rowLetter + String.valueOf(col + 1);
|
||||||
Button seatButton = new Button(seatLabel);
|
Button seatButton = new Button(seatLabel);
|
||||||
seatButton.setTextAlignment(TextAlignment.CENTER);
|
|
||||||
seatButton.getStyleClass().add("seat-button");
|
seatButton.getStyleClass().add("seat-button");
|
||||||
seatButton.setMinSize(90, 55); // Tamaño mínimo de cada botón
|
seatButton.setMinSize(80, 40); // Tamaño mínimo de cada botón
|
||||||
seatButton.setMaxSize(90, 55); // Tamaño máximo de cada botón
|
seatButton.setMaxSize(80, 40); // Tamaño máximo de cada botón
|
||||||
|
seatButton.setPadding(new Insets(10)); // Padding dentro de cada botón
|
||||||
int finalSeatNumber = seatNumber;
|
int finalSeatNumber = seatNumber;
|
||||||
|
|
||||||
if ("vendido".equals(seatStatus.getOrDefault(finalSeatNumber, "disponible"))) {
|
if ("vendido".equals(seatStatus.getOrDefault(finalSeatNumber, "disponible"))) {
|
||||||
|
@ -188,7 +186,7 @@ public class VentaBoletos extends Application {
|
||||||
|
|
||||||
borderPane.setCenter(mainLayout);
|
borderPane.setCenter(mainLayout);
|
||||||
|
|
||||||
Scene mainScene = new Scene(borderPane, 600, 650);
|
Scene mainScene = new Scene(borderPane, 540, 600);
|
||||||
mainScene.getStylesheets().add(getClass().getResource("/styles.css").toExternalForm());
|
mainScene.getStylesheets().add(getClass().getResource("/styles.css").toExternalForm());
|
||||||
mainStage.setScene(mainScene);
|
mainStage.setScene(mainScene);
|
||||||
mainStage.show();
|
mainStage.show();
|
||||||
|
@ -207,12 +205,12 @@ public class VentaBoletos extends Application {
|
||||||
int row = (seatNumber - 1) / cols;
|
int row = (seatNumber - 1) / cols;
|
||||||
int col = (seatNumber - 1) % cols;
|
int col = (seatNumber - 1) % cols;
|
||||||
char rowLetter = (char) ('A' + row);
|
char rowLetter = (char) ('A' + row);
|
||||||
String seatLabel = rowLetter + String.valueOf(col + 1)+"\n$"+seatPrices.get(seatNumber);
|
String seatLabel = rowLetter + String.valueOf(col + 1);
|
||||||
Button seatButton = new Button(seatLabel);
|
Button seatButton = new Button(seatLabel);
|
||||||
seatButton.setTextAlignment(TextAlignment.CENTER);
|
|
||||||
seatButton.getStyleClass().add("seat-button");
|
seatButton.getStyleClass().add("seat-button");
|
||||||
seatButton.setMinSize(90, 55); // Tamaño mínimo de cada botón
|
seatButton.setMinSize(80, 40); // Tamaño mínimo de cada botón
|
||||||
seatButton.setMaxSize(90, 55); // Tamaño máximo de cada botón
|
seatButton.setMaxSize(80, 40); // Tamaño máximo de cada botón
|
||||||
|
seatButton.setPadding(new Insets(10)); // Padding dentro de cada botón
|
||||||
int finalSeatNumber = seatNumber;
|
int finalSeatNumber = seatNumber;
|
||||||
|
|
||||||
if ("vendido".equals(seatStatus.getOrDefault(finalSeatNumber, "disponible"))) {
|
if ("vendido".equals(seatStatus.getOrDefault(finalSeatNumber, "disponible"))) {
|
||||||
|
@ -280,8 +278,7 @@ public class VentaBoletos extends Application {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {launch(args);
|
||||||
launch(args);
|
|
||||||
System.setProperty("org.apache.pdfbox.rendering.UsePureJavaCMYK", "true");
|
System.setProperty("org.apache.pdfbox.rendering.UsePureJavaCMYK", "true");
|
||||||
System.setProperty("org.apache.pdfbox.rendering.UsePureJavaRendering", "true");
|
System.setProperty("org.apache.pdfbox.rendering.UsePureJavaRendering", "true");
|
||||||
System.setProperty("org.apache.pdfbox.base.disableFontCache", "true");
|
System.setProperty("org.apache.pdfbox.base.disableFontCache", "true");
|
||||||
|
|
|
@ -6,6 +6,8 @@ import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -13,9 +15,9 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class VentanaPago {
|
public class VentanaPago {
|
||||||
private static final String DB_URL = "jdbc:mysql://localhost:3306/bookticket";
|
private static final String DB_URL = "jdbc:mysql://sql10.freesqldatabase.com:3306/sql10766655";
|
||||||
private static final String DB_USER = "root";
|
private static final String DB_USER = "sql10766655";
|
||||||
private static final String DB_PASSWORD = "";
|
private static final String DB_PASSWORD = "7BZbRjEkXZ";
|
||||||
private VentaBoletos ventaBoletos; // Referencia a VentaBoletos
|
private VentaBoletos ventaBoletos; // Referencia a VentaBoletos
|
||||||
|
|
||||||
public VentanaPago(VentaBoletos ventaBoletos) {
|
public VentanaPago(VentaBoletos ventaBoletos) {
|
||||||
|
@ -236,7 +238,7 @@ public class VentanaPago {
|
||||||
ticketDetails.append("Cliente: ").append(clientName).append("\n");
|
ticketDetails.append("Cliente: ").append(clientName).append("\n");
|
||||||
ticketDetails.append("Evento: ").append(eventName).append("\n");
|
ticketDetails.append("Evento: ").append(eventName).append("\n");
|
||||||
ticketDetails.append("Fecha de evento: ").append(eventDate).append("\n");
|
ticketDetails.append("Fecha de evento: ").append(eventDate).append("\n");
|
||||||
ticketDetails.append("Fecha de compra: ").append(new SimpleDateFormat("yyyy-MM-dd").format(new Date())).append("\n");
|
ticketDetails.append("Fecha de compra: ").append(new SimpleDateFormat("yyyy/MM/dd").format(new Date())).append("\n");
|
||||||
ticketDetails.append("Método de pago: ").append(paymentMethod).append("\n");
|
ticketDetails.append("Método de pago: ").append(paymentMethod).append("\n");
|
||||||
ticketDetails.append("Asientos: ").append(selectedSeats.size() > 1 ? "\n" : "");
|
ticketDetails.append("Asientos: ").append(selectedSeats.size() > 1 ? "\n" : "");
|
||||||
for (int seat : selectedSeats) {
|
for (int seat : selectedSeats) {
|
||||||
|
@ -251,9 +253,9 @@ public class VentanaPago {
|
||||||
actualizarEstadoBoletos(selectedSeats, ventaBoletos.getEventId()); // Cambia el idevento según corresponda
|
actualizarEstadoBoletos(selectedSeats, ventaBoletos.getEventId()); // Cambia el idevento según corresponda
|
||||||
|
|
||||||
// Generar el PDF del ticket usando la clase PDFGenerator
|
// Generar el PDF del ticket usando la clase PDFGenerator
|
||||||
String qrImagePath = "src/main/resources/qrcode.png"; // Ruta de tu imagen QR
|
InputStream qrImageStream = getClass().getResourceAsStream("/qrcode.png"); // Ruta de tu imagen QR
|
||||||
String pdfFileName = "ticket_" + System.currentTimeMillis() + ".pdf";
|
String pdfFileName = "ticket_" + System.currentTimeMillis() + ".pdf";
|
||||||
PDFGenerator.generarTicketPDF(eventName, eventDate, clientName, totalPrice, qrImagePath, ticketDetails.toString(), pdfFileName);
|
PDFGenerator.generarTicketPDF(eventName, eventDate, clientName, totalPrice, qrImageStream, ticketDetails.toString(), pdfFileName);
|
||||||
|
|
||||||
// Mostrar alerta de que el ticket fue guardado
|
// Mostrar alerta de que el ticket fue guardado
|
||||||
mostrarAlertaTicketGuardado(pdfFileName, paymentLayout);
|
mostrarAlertaTicketGuardado(pdfFileName, paymentLayout);
|
||||||
|
@ -261,7 +263,7 @@ public class VentanaPago {
|
||||||
|
|
||||||
private void generarPDF(String clientName, List<Integer> selectedSeats, Map<Integer, Double> seatPrices, String eventName, String eventDate, double totalPrice, String paymentMethod) {
|
private void generarPDF(String clientName, List<Integer> selectedSeats, Map<Integer, Double> seatPrices, String eventName, String eventDate, double totalPrice, String paymentMethod) {
|
||||||
// Generar el PDF del ticket usando la clase PDFGenerator
|
// Generar el PDF del ticket usando la clase PDFGenerator
|
||||||
String qrImagePath = "src/main/resources/qrcode.png"; // Ruta de tu imagen QR
|
InputStream qrImageStream = getClass().getResourceAsStream("/qrcode.png"); // Ruta de tu imagen QR
|
||||||
StringBuilder ticketDetails = new StringBuilder();
|
StringBuilder ticketDetails = new StringBuilder();
|
||||||
ticketDetails.append("Evento: ").append(eventName).append("\n");
|
ticketDetails.append("Evento: ").append(eventName).append("\n");
|
||||||
ticketDetails.append("Fecha: ").append(new SimpleDateFormat("dd-MM-yyyy").format(new Date())).append("\n");
|
ticketDetails.append("Fecha: ").append(new SimpleDateFormat("dd-MM-yyyy").format(new Date())).append("\n");
|
||||||
|
@ -275,7 +277,7 @@ public class VentanaPago {
|
||||||
ticketDetails.append("\nTotal: $").append(String.format("%.2f", totalPrice));
|
ticketDetails.append("\nTotal: $").append(String.format("%.2f", totalPrice));
|
||||||
|
|
||||||
String pdfFileName = "ticket_" + System.currentTimeMillis() + ".pdf";
|
String pdfFileName = "ticket_" + System.currentTimeMillis() + ".pdf";
|
||||||
PDFGenerator.generarTicketPDF(eventName, eventDate, clientName, totalPrice, qrImagePath, ticketDetails.toString(), pdfFileName);
|
PDFGenerator.generarTicketPDF(eventName, eventDate, clientName, totalPrice, qrImageStream, ticketDetails.toString(), pdfFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void actualizarEstadoBoletos(List<Integer> selectedSeats, int idevento) {
|
private void actualizarEstadoBoletos(List<Integer> selectedSeats, int idevento) {
|
||||||
|
|
Loading…
Reference in New Issue