From cf2ea35e244bddaf6772d309d3df85230ecabe79 Mon Sep 17 00:00:00 2001 From: Christopher Alessandro Rodriguez Salazar <zs21016323@estudiantes.uv.mx> Date: Mon, 17 Mar 2025 15:55:17 -0600 Subject: [PATCH] Final 1.0 --- pom.xml | 2 +- .../saladeconciertos/PDFGenerator.java | 16 ++++++++++----- .../saladeconciertos/VentaBoletos.java | 20 ++++++++++--------- .../example/saladeconciertos/VentanaPago.java | 2 +- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index a3f416f..f06dbef 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> - <version>2.0.24</version> + <version>3.0.3</version> </dependency> </dependencies> diff --git a/src/main/java/org/example/saladeconciertos/PDFGenerator.java b/src/main/java/org/example/saladeconciertos/PDFGenerator.java index ac29bdc..a16adf9 100644 --- a/src/main/java/org/example/saladeconciertos/PDFGenerator.java +++ b/src/main/java/org/example/saladeconciertos/PDFGenerator.java @@ -1,9 +1,11 @@ package org.example.saladeconciertos; +import javafx.scene.text.Font; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.pdfbox.pdmodel.font.Standard14Fonts; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import java.io.IOException; @@ -20,24 +22,26 @@ public class PDFGenerator { // Crear una nueva página PDPage page = new PDPage(); 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 try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { // Configurar la fuente y el tamaño para el título del evento - contentStream.setFont(PDType1Font.HELVETICA_BOLD, 24); + contentStream.setFont(fontbold, 24); contentStream.beginText(); contentStream.newLineAtOffset(50, 750); contentStream.showText(eventName); contentStream.endText(); // Configurar la fuente y el tamaño para la fecha del evento - contentStream.setFont(PDType1Font.HELVETICA_BOLD, 18); + contentStream.setFont(fontbold, 18); contentStream.beginText(); contentStream.newLineAtOffset(50, 720); contentStream.endText(); // Configurar la fuente y el tamaño para el contenido del reporte - contentStream.setFont(PDType1Font.HELVETICA, 12); + contentStream.setFont(font, 12); contentStream.beginText(); contentStream.newLineAtOffset(50, 680); @@ -76,18 +80,20 @@ public class PDFGenerator { // Crear una nueva página PDPage page = new PDPage(); 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 try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { // Configurar la fuente y el tamaño para el título - contentStream.setFont(PDType1Font.HELVETICA_BOLD, 20); + contentStream.setFont(fontbold, 20); contentStream.beginText(); contentStream.newLineAtOffset(50, 750); contentStream.showText("Ticket de Compra"); contentStream.endText(); // Configurar la fuente y el tamaño para el contenido - contentStream.setFont(PDType1Font.HELVETICA, 12); + contentStream.setFont(font, 12); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); diff --git a/src/main/java/org/example/saladeconciertos/VentaBoletos.java b/src/main/java/org/example/saladeconciertos/VentaBoletos.java index bcd0ea5..e6bef1b 100644 --- a/src/main/java/org/example/saladeconciertos/VentaBoletos.java +++ b/src/main/java/org/example/saladeconciertos/VentaBoletos.java @@ -14,6 +14,8 @@ import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.TextAlignment; import javafx.stage.Stage; import java.sql.Connection; @@ -120,12 +122,12 @@ public class VentaBoletos extends Application { int row = (seatNumber - 1) / cols; int col = (seatNumber - 1) % cols; char rowLetter = (char) ('A' + row); - String seatLabel = rowLetter + String.valueOf(col + 1); + String seatLabel = rowLetter + String.valueOf(col + 1)+"\n$"+seatPrices.get(seatNumber); Button seatButton = new Button(seatLabel); + seatButton.setTextAlignment(TextAlignment.CENTER); seatButton.getStyleClass().add("seat-button"); - seatButton.setMinSize(80, 40); // Tamaño mínimo 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 + seatButton.setMinSize(90, 55); // Tamaño mínimo de cada botón + seatButton.setMaxSize(90, 55); // Tamaño máximo de cada botón int finalSeatNumber = seatNumber; if ("vendido".equals(seatStatus.getOrDefault(finalSeatNumber, "disponible"))) { @@ -186,7 +188,7 @@ public class VentaBoletos extends Application { borderPane.setCenter(mainLayout); - Scene mainScene = new Scene(borderPane, 540, 600); + Scene mainScene = new Scene(borderPane, 600, 650); mainScene.getStylesheets().add(getClass().getResource("/styles.css").toExternalForm()); mainStage.setScene(mainScene); mainStage.show(); @@ -205,12 +207,12 @@ public class VentaBoletos extends Application { int row = (seatNumber - 1) / cols; int col = (seatNumber - 1) % cols; char rowLetter = (char) ('A' + row); - String seatLabel = rowLetter + String.valueOf(col + 1); + String seatLabel = rowLetter + String.valueOf(col + 1)+"\n$"+seatPrices.get(seatNumber); Button seatButton = new Button(seatLabel); + seatButton.setTextAlignment(TextAlignment.CENTER); seatButton.getStyleClass().add("seat-button"); - seatButton.setMinSize(80, 40); // Tamaño mínimo 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 + seatButton.setMinSize(90, 55); // Tamaño mínimo de cada botón + seatButton.setMaxSize(90, 55); // Tamaño máximo de cada botón int finalSeatNumber = seatNumber; if ("vendido".equals(seatStatus.getOrDefault(finalSeatNumber, "disponible"))) { diff --git a/src/main/java/org/example/saladeconciertos/VentanaPago.java b/src/main/java/org/example/saladeconciertos/VentanaPago.java index f30ca1b..f91365c 100644 --- a/src/main/java/org/example/saladeconciertos/VentanaPago.java +++ b/src/main/java/org/example/saladeconciertos/VentanaPago.java @@ -236,7 +236,7 @@ public class VentanaPago { ticketDetails.append("Cliente: ").append(clientName).append("\n"); ticketDetails.append("Evento: ").append(eventName).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("Asientos: ").append(selectedSeats.size() > 1 ? "\n" : ""); for (int seat : selectedSeats) {