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); }