예제 #1
0
        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);
        }