Almost done
This commit is contained in:
parent
a16633680c
commit
87cb244f71
4 changed files with 69 additions and 9 deletions
|
@ -190,5 +190,58 @@ public class Database {
|
|||
return false;
|
||||
}
|
||||
|
||||
/* --- TODO: insert more own code here --- */
|
||||
public Reservation addReservation(String username, String movie, String date) {
|
||||
if(!isConnected()) {
|
||||
System.err.println("addReservation: no connection to database");
|
||||
return null;
|
||||
}
|
||||
|
||||
System.out.println("Adding reservation for " + username + " for " + movie + " on " + date);
|
||||
|
||||
try {
|
||||
Statement stmt = conn.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM Users WHERE username = '" + username + "'");
|
||||
if (rs.next()) {
|
||||
int user_id = rs.getInt("id");
|
||||
// rs = stmt.executeQuery("SELECT * FROM Showings JOIN Movies ON Showings.movie_id = Movies.movie_id WHERE name = '" + movie + "' AND show_date = '" + date + "'");
|
||||
rs = stmt.executeQuery("SELECT * FROM Showings JOIN Movies ON Showings.movie_id = Movies.movie_id WHERE name = '" + movie + "' AND show_date = '" + date + "'");
|
||||
if (rs.next()) {
|
||||
System.out.println("Adding reservation");
|
||||
int showing_id = rs.getInt("showing_id");
|
||||
String theater = rs.getString("theater_id");
|
||||
stmt.executeUpdate("INSERT INTO Reservations (user_id, showing_id) VALUES (" + user_id + ", " + showing_id + ")");
|
||||
System.out.println("Reservation added");
|
||||
int bookingId = stmt.getGeneratedKeys().getInt(1);
|
||||
return new Reservation(bookingId, movie, date, theater);
|
||||
}
|
||||
}
|
||||
else {
|
||||
System.err.println(String.format("addReservation: user %s not found", username));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public ArrayList<Reservation> getReservations(String username) {
|
||||
ArrayList<Reservation> reservations = new ArrayList<Reservation>();
|
||||
|
||||
if(!isConnected()) {
|
||||
System.err.println("getReservations: no connection to database");
|
||||
return reservations;
|
||||
}
|
||||
|
||||
try {
|
||||
Statement stmt = conn.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT *, Theaters.name AS theater_name FROM Reservations JOIN Showings ON Reservations.showing_id = Showings.showing_id JOIN Movies ON Showings.movie_id = Movies.movie_id JOIN Theaters ON Showings.theater_id = Theaters.theater_id JOIN users ON Reservations.user_id = Users.id WHERE username = '" + username + "'");
|
||||
while (rs.next()) {
|
||||
reservations.add(new Reservation(rs.getInt("reservation_id"), rs.getString("name"), rs.getString("show_date"), rs.getString("theater_name")));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return reservations;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import java.util.List;
|
|||
|
||||
import datamodel.CurrentUser;
|
||||
import datamodel.Database;
|
||||
import datamodel.Reservation;
|
||||
import datamodel.Show;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -67,10 +68,12 @@ public class BookingTab {
|
|||
(event) -> {
|
||||
String movie = moviesList.getSelectionModel().getSelectedItem();
|
||||
String date = datesList.getSelectionModel().getSelectedItem();
|
||||
String user = CurrentUser.instance().getCurrentUserId();
|
||||
Reservation r = db.addReservation(user, movie, date);
|
||||
/* --- TODO: should attempt to book a ticket via the database --- */
|
||||
/* --- do not forget to report booking number! --- */
|
||||
/* --- update the displayed details (free seats) --- */
|
||||
report("Booked one ticket to "+movie+" on "+date);
|
||||
report(String.format("Ticket booked for %s on %s. Reservation number: %d", movie, date, r.getBookingId()));
|
||||
});
|
||||
|
||||
report("Ready.");
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
|
||||
import datamodel.Reservation;
|
||||
import datamodel.CurrentUser;
|
||||
import datamodel.Database;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.TableColumn;
|
||||
|
@ -58,7 +59,10 @@ public class ReservationsTab {
|
|||
/* --- TODO: replace with own code using the database object instead --- */
|
||||
System.out.println("Update booking list called.");
|
||||
|
||||
List<Reservation> bookings = Arrays.asList(new Reservation(1, "Star Wars", "2019-12-30", "Bio Söder"));
|
||||
// Get the list of bookings from the database
|
||||
List<Reservation> bookings = db.getReservations(CurrentUser.instance().getCurrentUserId());
|
||||
|
||||
// List<Reservation> bookings = Arrays.asList(new Reservation(1, "Star Wars", "2019-12-30", "Bio Söder"));
|
||||
tableReservations.getItems().setAll(bookings);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,9 +35,9 @@ CREATE TABLE IF NOT EXISTS Showings (
|
|||
|
||||
CREATE TABLE IF NOT EXISTS Reservations (
|
||||
reservation_id INTEGER PRIMARY KEY,
|
||||
username VARCHAR(50) REFERENCES Users(id),
|
||||
user_id INTEGER REFERENCES Users(id),
|
||||
showing_id INTEGER REFERENCES Showings(showing_id),
|
||||
reservation_number VARCHAR(50) UNIQUE NOT NULL DEFAULT (hex(randomblob(2))) -- 4 characters
|
||||
reservation_number VARCHAR(50) UNIQUE DEFAULT (hex(randomblob(2))) -- 4 characters
|
||||
);
|
||||
|
||||
INSERT INTO Theaters (name, total_seats) VALUES ('Theater 1', 100);
|
||||
|
@ -57,7 +57,7 @@ INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (3, 1, '2024-08-12
|
|||
INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (1, 2, '2024-03-04');
|
||||
INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (2, 2, '2024-01-10');
|
||||
|
||||
INSERT INTO Reservations (username, showing_id) VALUES (1, 1);
|
||||
INSERT INTO Reservations (username, showing_id) VALUES (2, 2);
|
||||
INSERT INTO Reservations (username, showing_id) VALUES (3, 3);
|
||||
INSERT INTO Reservations (username, showing_id) VALUES (1, 4);
|
||||
INSERT INTO Reservations (user_id, showing_id) VALUES (1, 1);
|
||||
INSERT INTO Reservations (user_id, showing_id) VALUES (2, 2);
|
||||
INSERT INTO Reservations (user_id, showing_id) VALUES (3, 3);
|
||||
INSERT INTO Reservations (user_id, showing_id) VALUES (1, 4);
|
Loading…
Reference in a new issue