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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus