1313import com .expediagroup .sdk .rapid .models .PaymentRequest ;
1414import com .expediagroup .sdk .rapid .models .PhoneRequest ;
1515import com .expediagroup .sdk .rapid .models .RoomPriceCheck ;
16- import com .expediagroup .sdk .rapid .models .RoomPriceCheckLinks ;
1716import com .expediagroup .sdk .rapid .operations .DeleteHeldBookingOperation ;
1817import com .expediagroup .sdk .rapid .operations .DeleteHeldBookingOperationContext ;
1918import com .expediagroup .sdk .rapid .operations .GetReservationByItineraryIdOperation ;
2726import java .util .Collections ;
2827import java .util .List ;
2928import java .util .UUID ;
29+ import java .util .concurrent .CompletableFuture ;
3030
3131public class BookService extends RapidService {
3232
@@ -47,10 +47,7 @@ public Response<ItineraryCreation> createBooking(RoomPriceCheck roomPriceCheck,
4747 .travelerHandlingInstructions ("Please use the card provided for payment. Avoid cancellation as this is for a corporate traveler. Contact traveler if any issues." )
4848 .build ();
4949
50- RoomPriceCheckLinks roomPriceCheckLinks = roomPriceCheck .getLinks ();
51- if (roomPriceCheckLinks == null ) throw new RuntimeException ();
52- Link bookLink = roomPriceCheckLinks .getBook ();
53- if (bookLink == null ) throw new RuntimeException ();
50+ Link bookLink = roomPriceCheck .getLinks ().getBook ();
5451
5552 PostItineraryOperationContext postItineraryOperationContext =
5653 PostItineraryOperationContext .builder ().customerIp ("127.0.0.1" ).build ();
@@ -59,6 +56,33 @@ public Response<ItineraryCreation> createBooking(RoomPriceCheck roomPriceCheck,
5956 return rapidClient .execute (operation );
6057 }
6158
59+ public CompletableFuture <Response <ItineraryCreation >> asyncCreateBooking (RoomPriceCheck roomPriceCheck , List <String > occupancy ) {
60+
61+ // In the Book request, include corresponding separate instances of room in the rooms array for each room you wish to book. */
62+ List <CreateItineraryRequestRoom > rooms = Collections .nCopies (occupancy .size (), createRoom ());
63+
64+ CreateItineraryRequest createItineraryRequest = CreateItineraryRequest .builder ()
65+ .affiliateReferenceId (UUID .randomUUID ().toString ().substring (0 , 28 ))
66+ .hold (false )
67+ 68+ .phone (phone ())
69+ .rooms (rooms )
70+ .payments (payments ())
71+ .affiliateMetadata ("data_point_1:123|data_point2:This is data." )
72+ .taxRegistrationNumber ("12345678910" )
73+ .travelerHandlingInstructions ("Please use the card provided for payment. Avoid cancellation as this is for a corporate traveler. Contact traveler if any issues." )
74+ .build ();
75+
76+ Link bookLink = roomPriceCheck .getLinks ().getBook ();
77+
78+ PostItineraryOperationContext postItineraryOperationContext =
79+ PostItineraryOperationContext .builder ().customerIp ("127.0.0.1" ).build ();
80+
81+ PostItineraryOperation operation = new PostItineraryOperation (bookLink , postItineraryOperationContext , createItineraryRequest );
82+
83+ return rapidClient .executeAsync (operation );
84+ }
85+
6286 public Response <ItineraryCreation > createBookingWithHold (RoomPriceCheck roomPriceCheck , List <String > occupancy ) {
6387
6488 // In the Book request, include corresponding separate instances of room in the rooms array for each room you wish to book. */
@@ -77,10 +101,7 @@ public Response<ItineraryCreation> createBookingWithHold(RoomPriceCheck roomPric
77101 .travelerHandlingInstructions ("Please use the card provided for payment. Avoid cancellation as this is for a corporate traveler. Contact traveler if any issues." )
78102 .build ();
79103
80- RoomPriceCheckLinks roomPriceCheckLinks = roomPriceCheck .getLinks ();
81- if (roomPriceCheckLinks == null ) throw new RuntimeException ();
82- Link bookLink = roomPriceCheckLinks .getBook ();
83- if (bookLink == null ) throw new RuntimeException ();
104+ Link bookLink = roomPriceCheck .getLinks ().getBook ();
84105
85106 PostItineraryOperationContext postItineraryOperationContext =
86107 PostItineraryOperationContext .builder ().customerIp ("127.0.0.1" ).build ();
@@ -102,10 +123,7 @@ public Response<Nothing> resumeBooking(ItineraryCreation itineraryCreation) {
102123 }
103124
104125 public Response <Itinerary > getReservationByItineraryId (ItineraryCreation itineraryCreation ) {
105- ItineraryCreationLinks itineraryCreationLinks = itineraryCreation .getLinks ();
106- if (itineraryCreationLinks == null ) throw new RuntimeException ();
107- Link retrieveLink = itineraryCreationLinks .getRetrieve ();
108- if (retrieveLink == null ) throw new RuntimeException ();
126+ Link retrieveLink = itineraryCreation .getLinks ().getRetrieve ();
109127
110128 GetReservationByItineraryIdOperationContext getReservationByItineraryIdOperationContext =
111129 GetReservationByItineraryIdOperationContext .builder ().customerIp ("127.0.0.1" ).build ();
@@ -125,6 +143,16 @@ public Response<Nothing> cancelHeldReservationByItineraryId(ItineraryCreation it
125143 return rapidClient .execute (new DeleteHeldBookingOperation (cancelLink , deleteHeldBookingOperationContext ));
126144 }
127145
146+ public CompletableFuture <Response <Itinerary >> asyncGetReservationByItineraryId (ItineraryCreation itineraryCreation ) {
147+
148+ Link retrieveLink = itineraryCreation .getLinks ().getRetrieve ();
149+
150+ GetReservationByItineraryIdOperationContext getReservationByItineraryIdOperationContext =
151+ GetReservationByItineraryIdOperationContext .builder ().customerIp ("127.0.0.1" ).build ();
152+
153+ return rapidClient .executeAsync (new GetReservationByItineraryIdOperation (retrieveLink , getReservationByItineraryIdOperationContext ));
154+ }
155+
128156 /* Helper methods */
129157 private CreateItineraryRequestRoom createRoom () {
130158 return CreateItineraryRequestRoom .builder ()
0 commit comments