From f23128a61e9d1cabcee9bffec57dd178a34ebbe2 Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Thu, 1 Jun 2017 16:26:44 +1200 Subject: [PATCH] Story 9 functionality added. --- .../controllers/SharedTripsController.java | 18 ++++++++++++++++-- src/main/java/model/SharedTrip.java | 13 +++++++++++-- .../controllers/MyTripsController.class | Bin 7818 -> 7822 bytes .../controllers/SharedTripsController.class | Bin 10944 -> 12335 bytes target/classes/model/SharedTrip.class | Bin 1305 -> 1803 bytes target/classes/serialisation/sharedtrips.json | 2 +- 6 files changed, 28 insertions(+), 5 deletions(-) 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 df5a58eb958469eb3e632e659715c9854ae78dbe..fad58c7bfb9e95606dce09595328efb5ba3ae0f0 100644 GIT binary patch delta 213 zcmeCO?X%rbFTgLL;gg%6lA5C*Qj}R>?YX&E;5vueLIySlW(Ed^Jz85BSdTGm2U2X? z7}$?7tc9|KIF>RjoZKZDB4P&=k=Vu{xs5?;H-mH}NQ3m`kCINTvltdJES+p2Wh>jm z;Lk9NArQz9VOYu##ITGZm|+!=y_O-2VfW-oQku@o7+4s(82T8P7_1o@7&;g_85lvf wGt>il3=I81%mWmOWZ-7#VVD3^)dmz1Wnjx@XPEehfuB+1JA=dKKT>_n0MS@BfB*mh delta 208 zcmeCP?XulaFTlsI;gg%6lA5C*Qj}R>y}3`|I)~ak1~vv}1_p-RT3Z-ck1=cmQf%88 z*pD%+fwF`+mNG1u+$|X*Yzq{T*v25ajX`QRgLEWF!{pDBPOLK-7BVcEY$atY+s)w5 zFq0t=$PZyy!Vtu;lp&a5C6K*_A&g7`hnx7?>EW8R{827&;jkL6!sA q4M4gdhK)NhjRV+H`gHZ)TJ diff --git a/target/classes/controllers/SharedTripsController.class b/target/classes/controllers/SharedTripsController.class index d4a45bfbbda282b8a7fe68e8581fe0844ef361dd..f4c7d5260576203ec7981d64c59496aeb09f3f98 100644 GIT binary patch delta 5851 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 diff --git a/target/classes/model/SharedTrip.class b/target/classes/model/SharedTrip.class index 4c4922fa3eb89bdb178941d7ad82474bff64166b..1ca7e3233e18ecb04829affbe0a979014369b692 100644 GIT binary patch literal 1803 zcma)6+j84f6kW%bE!&Y}*SVAyLy|Tvz9e-@DNvl2GzkGyH-$O`5_6L+)ls9^9!bu? z8xQ;hJTbiVr4KNZrVO_a;D!HThRZsVLPC-UMsxPr=jdqdwb$M{zy0;&uK-@cP7>$w zsx&vGc}<$CH1pEjl;&27=Jh1bp_;-1ZmU?7izR866L>?;^D0(S$l^_D-b$f{x05t? z5~$0ayD1D|RhoM$-cj+cz_4rTo_l*&w`{#-n*yRHpbcEpS?u+;t!~E^7-`lY>brWy z*1Mfb!*jS>6^PGUUCX;AkS)}AdWLCN)*P!}trgb=lqGHmWa?JeTpjGROlK`X&((Wv z-CoxnORmFB#oMwNCKtjqwsgldd@v$0T%U}Nh7eFYrnjtr&W}b5#nZ?MOCV+NL_k-9 zpOQkl;py$|yL#UzLO})25V>(ol4zkwQ4%c*B3}uN6;7i0X-nOxjODHjY+HaIZjwi% zH*nhKiY4XE9A|eszFCfMO(uIbTn*XMj$dXslh@~!$Ztz*an$rgNh!K zWg3S?W?8!W4zr0ly@AL1qOZq;&noSnZJTY+>UG`9y%yEjm36LLuE&l^8kQ5hB!FYd z4mqgneXe*yktHLeCS_9{v)679sHc!CvuiBtGS>Df;{T8ECo2}Vlpngexq0${ENPgv zJR~s0=3qPf{oz-a2jY6aPi_LUr|>%2n_)4SYvxeT>7bXDVA5*cuIVh$8EFQ@wTYCJ7~H7Pb)B9s1f0KgH$oayW>1B zq6i=Mk?*moILFvg6PTo(;_3?|5as-Gsk{fl5#fk(C>$}4IEVTaiBf3~$$g|0;};A) zfmX^tLHc_i_X2GW3T>LW!e`A2aF zWz3N6EOCaR{E3)~D`NH!#B$uNF!w;$3TK&RjP%ow=|p@2aes5t526JJLTG`jc#%6( zJliC}2#i$~a|LpYg!43VJ){@SdhOz#z#oKr-sQAuOr+&^XhdI|sl delta 595 zcmXYu%T7~K6o$WZsi!?`+ETEHR@-95LR%}gs0c_EZJTKxHfnO-&vP`ul=v=m*F+H{q66kuRxi5A@(w?F`|*v z$ZHfdj%gHK!SNuYA^IpdoN(!)q)~Pm<77y1D#&SF8Fx9ugvO-9l*3trJ(JB=b5(*! z)_eS9@!@iDVZ~}bop|-*g=tj%`$pNA_J11bp$ZwrInFC)baa7>ic4HpT%oGCs%vp( z{W&w4kK-w>QFEA6++<#{K*qq#rxdqHIZP{Vb4PKPy8qf7?1?^VJZlt}8?B|{{OU@x zwd8M_zx*w0-L|sBRsVsVP4>x_`ZF=)o_^sz$?6290%`xFooc_|=?@6qooa}bMEfO= z@2WUJLNd{FkV7)VASs&NSzoZRq*sfDJZmZub>1>MvVof@*>6aHrmMb*%5~^Yd?36* zM50(!(4ohBZW`;`?eEf!tr5vtItVOw==E~%WTb^QH7I7GTe7gcMMM^gQj&O_UMli< zp4il8Q=$mSUat1vw#6)m$%x$}QVnDOA>c4%6n+zkiL(EwlufeSkiRRkF}dP; GW#Ate=Tag7 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