예제 #1
0
        public async Task <dto.RetrieveBookingResponse> RetrieveBooking(dto.RetrieveBookingRequest retrieveBookingRequest)
        {
            if (string.IsNullOrEmpty(await _sessionBag.Signature()))
            {
                await _userSessionService.AnonymousLogonUnique();
            }
            var getBookingRequestData = new GetBookingRequestData
            {
                GetBookingBy       = GetBookingBy.RecordLocator,
                GetByRecordLocator = Mapper.Map <GetByRecordLocator>(retrieveBookingRequest)
            };
            var getBookingResponse = await _client.GetBookingAsync(new GetBookingRequest
            {
                ContractVersion        = _navApiContractVer,
                MessageContractVersion = _navMsgContractVer,
                Signature = await _sessionBag.Signature(),
                EnableExceptionStackTrace = false,
                GetBookingReqData         = getBookingRequestData
            });

            if (getBookingResponse.Booking == null)
            {
                await _sessionBag.SetBooking(null);

                throw new dto.ResponseErrorException(dto.Enumerations.ResponseErrorCode.BookingNotFound, new[] { "Booking not found. " });
            }
            var booking = Mapper.Map <dto.Booking>(getBookingResponse.Booking);
            await _sessionBag.SetBooking(booking);

            return(new dto.RetrieveBookingResponse {
                Booking = booking
            });
        }