@@ -103,7 +103,7 @@ function getTravelerName(traveler: ArrayValues<PnrData['pnrTravelers']>['persona
103103 name += ` ${ traveler . name . given } ` ;
104104 }
105105
106- return name . trim ( ) ;
106+ return name ? .trim ( ) ;
107107}
108108
109109function getAddressFromLocation (
@@ -153,73 +153,75 @@ function getAirReservations(pnr: Pnr, travelers: PnrTraveler[]): Array<{reservat
153153 pnrData . travelerInfos . forEach ( ( travelerInfo ) => {
154154 travelerInfo . tickets . forEach ( ( ticket ) => {
155155 const flightCoupons = ticket . flightCoupons ;
156- flightCoupons . forEach ( ( flightDetails , index ) => {
157- const legIdx = flightDetails . legIdx ;
158- const flightIdx = flightDetails . flightIdx ;
159- const flightObject = pnrData . legs ?. at ( legIdx ) ?. flights . at ( flightIdx ) ;
160-
161- const airlineCode = flightObject ?. marketing . airlineCode ;
162- const longAirlineName = airlineInfo . find ( ( info ) => info . airlineCode === airlineCode ) ?. airlineName ?? airlineCode ;
163-
164- const company = {
165- shortName : airlineCode ?? '' ,
166- phone : '' ,
167- longName : longAirlineName ?? '' ,
168- } ;
169-
170- const origin = flightObject ?. origin ;
171- const originAirport = airports . find ( ( airport ) => airport . airportCode === origin ) ;
172- const start = {
173- date : flightObject ?. departureDateTime ?. iso8601 ?? '' ,
174- timezoneOffset : '' ,
175- shortName : origin ,
176- longName : originAirport ?. airportName ?? origin ,
177- cityName : `${ originAirport ?. cityName } , ${ originAirport ?. stateCode } , ${ originAirport ?. countryName } ` ,
178- } ;
179-
180- const dest = flightObject ?. destination ;
181- const destAirport = airports . find ( ( airport ) => airport . airportCode === dest ) ;
182- const end = {
183- date : flightObject ?. arrivalDateTime ?. iso8601 ?? '' ,
184- timezoneOffset : '' ,
185- shortName : dest ,
186- longName : destAirport ?. airportName ?? dest ,
187- cityName : `${ destAirport ?. cityName } , ${ destAirport ?. stateCode } , ${ destAirport ?. countryName } ` ,
188- } ;
189-
190- const route = {
191- number : flightObject ?. marketing . num ?? '' ,
192- airlineCode : `${ flightObject ?. marketing . airlineCode } ${ flightObject ?. marketing . num } ` ,
193- class : flightObject ?. cabin ,
194- } ;
195-
196- const confirmations = [
197- {
198- name : 'Confirmation Number' ,
199- value : flightObject ?. vendorConfirmationNumber ?? '' ,
200- } ,
201- ] ;
202- const traveler = findTravelerInfo ( travelers , travelerInfo . userId . id ) ;
203- const reservationObject : Reservation = {
204- company,
205- start,
206- end,
207- route,
208- legId : legIdx ,
209- confirmations,
210- arrivalGate : flightObject ?. arrivalGate ,
211- seatNumber : getSeatByLegAndFlight ( travelerInfo , legIdx , flightIdx ) ,
212- type : CONST . RESERVATION_TYPE . FLIGHT ,
213- duration : parseDurationToSeconds ( flightObject ?. duration . iso8601 ?? '' ) ,
214- reservationID : pnr . pnrId ,
215- travelerPersonalInfo : {
216- name : getTravelerName ( traveler ) ,
217- email : traveler ?. email ?? '' ,
218- } ,
219- } ;
156+ flightCoupons
157+ . sort ( ( a , b ) => a . legIdx - b . legIdx )
158+ . forEach ( ( flightDetails , index ) => {
159+ const legIdx = flightDetails . legIdx ;
160+ const flightIdx = flightDetails . flightIdx ;
161+ const flightObject = pnrData . legs ?. at ( legIdx ) ?. flights . at ( flightIdx ) ;
162+
163+ const airlineCode = flightObject ?. marketing . airlineCode ;
164+ const longAirlineName = airlineInfo . find ( ( info ) => info . airlineCode === airlineCode ) ?. airlineName ?? airlineCode ;
165+
166+ const company = {
167+ shortName : airlineCode ?? '' ,
168+ phone : '' ,
169+ longName : longAirlineName ?? '' ,
170+ } ;
171+
172+ const origin = flightObject ?. origin ;
173+ const originAirport = airports . find ( ( airport ) => airport . airportCode === origin ) ;
174+ const start = {
175+ date : flightObject ?. departureDateTime ?. iso8601 ?? '' ,
176+ timezoneOffset : '' ,
177+ shortName : origin ,
178+ longName : originAirport ?. airportName ?? origin ,
179+ cityName : `${ originAirport ?. cityName } , ${ originAirport ?. stateCode } , ${ originAirport ?. countryName } ` ,
180+ } ;
181+
182+ const dest = flightObject ?. destination ;
183+ const destAirport = airports . find ( ( airport ) => airport . airportCode === dest ) ;
184+ const end = {
185+ date : flightObject ?. arrivalDateTime ?. iso8601 ?? '' ,
186+ timezoneOffset : '' ,
187+ shortName : dest ,
188+ longName : destAirport ?. airportName ?? dest ,
189+ cityName : `${ destAirport ?. cityName } , ${ destAirport ?. stateCode } , ${ destAirport ?. countryName } ` ,
190+ } ;
191+
192+ const route = {
193+ number : flightObject ?. marketing . num ?? '' ,
194+ airlineCode : `${ flightObject ?. marketing . airlineCode } ${ flightObject ?. marketing . num } ` ,
195+ class : flightObject ?. cabin ,
196+ } ;
197+
198+ const confirmations = [
199+ {
200+ name : 'Confirmation Number' ,
201+ value : flightObject ?. vendorConfirmationNumber ?? '' ,
202+ } ,
203+ ] ;
204+ const traveler = findTravelerInfo ( travelers , travelerInfo . userId . id ) ;
205+ const reservationObject : Reservation = {
206+ company,
207+ start,
208+ end,
209+ route,
210+ legId : legIdx ,
211+ confirmations,
212+ arrivalGate : flightObject ?. arrivalGate ,
213+ seatNumber : getSeatByLegAndFlight ( travelerInfo , legIdx , flightIdx ) ,
214+ type : CONST . RESERVATION_TYPE . FLIGHT ,
215+ duration : parseDurationToSeconds ( flightObject ?. duration . iso8601 ?? '' ) ,
216+ reservationID : pnr . pnrId ,
217+ travelerPersonalInfo : {
218+ name : getTravelerName ( traveler ) ,
219+ email : traveler ?. email ?? '' ,
220+ } ,
221+ } ;
220222
221- reservationList . push ( { reservation : reservationObject , reservationIndex : index } ) ;
222- } ) ;
223+ reservationList . push ( { reservation : reservationObject , reservationIndex : index } ) ;
224+ } ) ;
223225 } ) ;
224226 } ) ;
225227
@@ -513,5 +515,6 @@ export {
513515 getReservationDetailsFromSequence ,
514516 formatAirportInfo ,
515517 getPNRReservationDataFromTripReport ,
518+ getAirReservations ,
516519} ;
517520export type { ReservationData } ;
0 commit comments