diff --git a/src/main/java/controllers/SharedTripsController.java b/src/main/java/controllers/SharedTripsController.java index 5f262d5..0492384 100644 --- a/src/main/java/controllers/SharedTripsController.java +++ b/src/main/java/controllers/SharedTripsController.java @@ -72,6 +72,7 @@ public class SharedTripsController extends Controller{ popUpGrid.addRow(0);//car color popUpGrid.addRow(0);//car year popUpGrid.addRow(0);//car performance + popUpGrid.addRow(0);//book button //information Label tripTitle = new Label(trip.name); @@ -121,13 +122,23 @@ public class SharedTripsController extends Controller{ stopTableView.setItems(trip.route); - popUpGrid.add(stopTableView, 1, 1, 1, 8); + popUpGrid.add(stopTableView, 1, 1, 1, 9); AnchorPane.setTopAnchor(popUpGrid, 0.0); AnchorPane.setBottomAnchor(popUpGrid, 0.0); AnchorPane.setRightAnchor(popUpGrid, 0.0); AnchorPane.setLeftAnchor(popUpGrid, 0.0); + //book button + Button bookRide = new Button("Book Ride"); + bookRide.setOnAction(e->{ + trip.bookSeat(parent.getSession().getUserCode()); + tripDetails.close(); + search(); + popUp(Alert.AlertType.CONFIRMATION, "Success!", "You have Successfully booked a ride!", "The ride has been successfully booked and can be viewed in your booked rides."); + }); + popUpGrid.add(bookRide, 0, 10, 2, 1); + wrapper.getChildren().add(popUpGrid); Scene detailsScene = new Scene(wrapper); @@ -149,8 +160,11 @@ public class SharedTripsController extends Controller{ boolean ignoreStopSearch = ignoreStopFilter && ignoreStopNameSearch; Pattern stopNamePattern = Pattern.compile(".*"+stopName.getText()+".*", Pattern.CASE_INSENSITIVE); //ignore direction - boolean ignoreDirection = directionBox.getSelectionModel().isSelected(0); + boolean ignoreDirection = directionBox.getSelectionModel().isSelected(0) || directionBox.getValue() == null; for(SharedTrip sharedTrip: parent.getSession().getDataManager().getSharedTrips()){ + if (sharedTrip.isFull()){ + continue; + } //stops are equal boolean add = false; for (TripStop stop : sharedTrip.route) { diff --git a/src/main/java/model/SharedTrip.java b/src/main/java/model/SharedTrip.java index ebf4e95..abc3cae 100644 --- a/src/main/java/model/SharedTrip.java +++ b/src/main/java/model/SharedTrip.java @@ -7,8 +7,11 @@ public class SharedTrip extends Trip { private int seatsAvailable; + private String[] userBookings; + public SharedTrip (Trip trip, int seatsAvailable){ super(trip.name, trip.route, trip.direction, trip.ride, trip.days, trip.reoccur, trip.endDate); + userBookings = new String[this.ride.getNumSeats() - 1]; this.seatsAvailable = seatsAvailable; } @@ -29,7 +32,13 @@ public class SharedTrip extends Trip { return seatsAvailable; } - public void setSeatsAvailable(int seatsAvailable) { - this.seatsAvailable = seatsAvailable; + public void bookSeat(String user){ + userBookings[ride.getNumSeats() - seatsAvailable - 1] = user; + seatsAvailable -= 1; } + + public boolean isFull(){ + return seatsAvailable == 0; + } + } diff --git a/target/classes/controllers/MyTripsController.class b/target/classes/controllers/MyTripsController.class index df5a58e..fad58c7 100644 Binary files a/target/classes/controllers/MyTripsController.class and b/target/classes/controllers/MyTripsController.class differ diff --git a/target/classes/controllers/SharedTripsController.class b/target/classes/controllers/SharedTripsController.class index d4a45bf..f4c7d52 100644 Binary files a/target/classes/controllers/SharedTripsController.class and b/target/classes/controllers/SharedTripsController.class differ diff --git a/target/classes/model/SharedTrip.class b/target/classes/model/SharedTrip.class index 4c4922f..1ca7e32 100644 Binary files a/target/classes/model/SharedTrip.class and b/target/classes/model/SharedTrip.class differ diff --git a/target/classes/serialisation/sharedtrips.json b/target/classes/serialisation/sharedtrips.json index 164d13b..22ae388 100644 --- a/target/classes/serialisation/sharedtrips.json +++ b/target/classes/serialisation/sharedtrips.json @@ -1 +1 @@ -[{"serialisedRoute":[{"serialiseTime":"9:00","serialiseName":"1 Avonhead Road"},{"serialiseTime":"9:15","serialiseName":"1 University Drive"}],"direction":"University","ride":{"model":"Nissan March","colour":"Baby Blue","licensePlate":"EPU001","year":2004,"numSeats":5},"days":[false,true,true,false,true,false,false],"reoccur":true,"endDate":"30-12-2017","name":"Home to Uni"}] \ No newline at end of file +[{"seatsAvailable":0,"userBookings":["a","a","a","a"],"serialisedRoute":[{"serialiseTime":"9:00","serialiseName":"1 Avonhead Road"},{"serialiseTime":"9:15","serialiseName":"1 University Drive"}],"direction":"University","ride":{"model":"Nissan March","colour":"Baby Blue","licensePlate":"EPU001","year":2004,"numSeats":5},"days":[false,true,true,false,true,false,false],"reoccur":true,"endDate":"30-12-2017","name":"Home to Uni"}] \ No newline at end of file