Example #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);
        }
        // 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)));
 }