public async Task <dto.GetSeatAvailabilityResponse> GetSeatAvailability(dto.SeatAvailabilityRequest request) { var booking = await _sessionBag.Booking(); var journeyIndex = request.SeatAvailabilityRequestData.JourneyIndex; var segmentIndex = request.SeatAvailabilityRequestData.SegmentIndex; var legIndex = request.SeatAvailabilityRequestData.SegmentIndex; var leg = booking.Journeys[journeyIndex].Segments[segmentIndex].Legs[legIndex]; var seatAvailabilityRequest = new SeatAvailabilityRequest { DepartureStation = leg.DepartureStation, ArrivalStation = leg.ArrivalStation, CarrierCode = leg.FlightDesignator.CarrierCode, FlightNumber = leg.FlightDesignator.FlightNumber, OpSuffix = leg.FlightDesignator.OpSuffix, IncludePropertyLookup = true, IncludeSeatFees = true, STD = leg.STD, SeatAssignmentMode = SeatAssignmentMode.PreSeatAssignment, CollectedCurrencyCode = booking.CurrencyCode, CompressProperties = true, SeatAvailabilityFilter = new SeatAvailabilityFilter { ExcludeFacilities = true } }; var seatAvailabilityResponse = await _client.GetSeatAvailabilityAsync(new GetSeatAvailabilityRequest { ContractVersion = _navApiContractVer, MessageContractVersion = _navMsgContractVer, Signature = await _sessionBag.Signature(), EnableExceptionStackTrace = false, SeatAvailabilityRequest = seatAvailabilityRequest }); var mappedResponse = Mapper.Map <dto.GetSeatAvailabilityResponse>(seatAvailabilityResponse); await _sessionBag.SetSeatAvailabilityResponse(mappedResponse, journeyIndex, segmentIndex, legIndex); return(mappedResponse); }
// i need to pass in this obj to get the segment related parameters //to populate seats, to tie back with the seat group public SeatAvailabilityResponse SeatAvailability(String pnr) { //because im passing the pnr in, i need to call the booking in state first GetBookingRequest bookingrequest = new GetBookingRequest(); bookingrequest.Signature = signature; Booking booking = RetrieveBooking(pnr); GetSeatAvailabilityRequest getseatavailabilityrequest = new GetSeatAvailabilityRequest(); getseatavailabilityrequest.Signature = signature; SeatAvailabilityRequest seatavailabilityrequest = new SeatAvailabilityRequest(); getseatavailabilityrequest.SeatAvailabilityRequest = seatavailabilityrequest; //how do i get it to work for multiple segments seating: as Journeys are only tied to sell, this code only works for 1 segment seatavailabilityrequest.CarrierCode = booking.Journeys[0].Segments[0].FlightDesignator.CarrierCode; seatavailabilityrequest.FlightNumber = booking.Journeys[0].Segments[0].FlightDesignator.FlightNumber; // seatavailabilityrequest.OpSuffix = booking.Journeys[0].Segments[0]. seatavailabilityrequest.DepartureStation = booking.Journeys[0].Segments[0].ArrivalStation; seatavailabilityrequest.ArrivalStation = booking.Journeys[0].Segments[0].DepartureStation; seatavailabilityrequest.STD = booking.Journeys[0].Segments[0].STD; seatavailabilityrequest.SeatAssignmentMode = SeatAssignmentMode.PreSeatAssignment; seatavailabilityrequest.EnforceSeatGroupRestrictions = true; seatavailabilityrequest.IncludePropertyLookup = false; GetSeatAvailabilityResponse seatavailabilityresponse = clientapi.GetSeatAvailability(getseatavailabilityrequest); Console.WriteLine("Seats avaialble"); return seatavailabilityresponse.SeatAvailabilityResponse; }
public async Task <IActionResult> Get([FromQuery] SeatAvailabilityRequest request) { return(new OkObjectResult(await _seatsService.GetSeatAvailability(request))); }