public string Book(AirItinerary airItinerary, List<Passenger> passengers, List<Charge> charges, Account account, out List<string> ticketNumbers) { using (new ApplicationContextScope(new ApplicationContext())) { ApplicationContext.Current.Items["SessionId"] = _supplierInfo["SessionId"]; string pnr = string.Empty; ticketNumbers = new List<string>(); try { //1. Get the securityToken airItinerary[Constants.SecurityToken] = CreateJetSession(); //2. Sell the flight segment SellFlightSegments(airItinerary); //3. Add passenger information JetConnector connector = new JetConnector(_supplierInfo.GetAirBookService()); JetModel.OTA_AirBookRQRequest bookRequest = RequestTranslators.CreateAirBookRequest(_supplierInfo, airItinerary, passengers, charges, account); JetModel.OTA_AirBookRQResponse bookResponse = connector.DoTransaction<JetModel.OTA_AirBookRQRequest, JetModel.OTA_AirBookRQResponse>( bookRequest); pnr = ResponseTranslators.GetPnrFromBookResponse(bookResponse, airItinerary); //4.Get Ticket Number try { connector._url = _supplierInfo.GetTicketService(); JetModel.AirTicketRQRequest ticketRequest = RequestTranslators.CreateAitTicketRequest(_supplierInfo, airItinerary, pnr); JetModel.AirTicketRQResponse ticketResponse = connector.DoTransaction<JetModel.AirTicketRQRequest, JetModel.AirTicketRQResponse>( ticketRequest); ticketNumbers = ResponseTranslators.GetTicketNumbers(ticketResponse, airItinerary); } catch (Exception ex) { Logger.LogException(ex, Source, "Ticket", Severity.Major); } } catch (Exception ex) { Logger.LogException(ex, Source, "Book", Severity.Major); } finally { Task.Factory.StartNew(() => CloseJetSession(airItinerary[Constants.SecurityToken], _supplierInfo["SessionId"])); } return pnr; } }
private void SellFlightSegments(AirItinerary airItinerary) { JetConnector connector = new JetConnector(_supplierInfo.GetAirSellService()); JetModel.AirSellRQRequest sellRequest = RequestTranslators.CreateAirSellRequest(_supplierInfo, airItinerary); JetModel.AirSellRQResponse sellResponse = connector.DoTransaction<JetModel.AirSellRQRequest, JetModel.AirSellRQResponse>(sellRequest); ResponseTranslators.ParseSellFlightResponse(sellResponse, ref airItinerary); }
private string CreateJetSession() { JetConnector connector = new JetConnector(_supplierInfo.GetSessionCreateService()); JetModel.LogonRequest request = RequestTranslators.CreateLogonRequest(_supplierInfo); JetModel.LogonResponse response = connector.DoTransaction<JetModel.LogonRequest, JetModel.LogonResponse>(request); if (response == null || !string.Equals(response.LogonResult, "OK", StringComparison.InvariantCultureIgnoreCase)) throw new Exception("JET API Session creation failed!!!"); return response.Security.BinarySecurityToken; }
private void IgnoreTransation(string securityToken, string sessionId) { using (new ApplicationContextScope(new ApplicationContext())) { ApplicationContext.Current.Items["SessionId"] = sessionId; try { JetConnector connector = new JetConnector(_supplierInfo.GetIgnoreService()); JetModel.IgnoreRQRequest request = RequestTranslators.CreateIgnoreTransationRequest(_supplierInfo, securityToken); JetModel.IgnoreRQResponse response = connector.DoTransaction<JetModel.IgnoreRQRequest, JetModel.IgnoreRQResponse>(request); if (response == null) throw new Exception("JET API Ignore Transation failed!!!"); } catch (Exception ex) { Logger.LogException(ex, Source, "IgnoreTransation", Severity.Major); } } }
public List<AirItinerary> Search(FlightSearchParams searchParams) { using (new ApplicationContextScope(new ApplicationContext())) { ApplicationContext.Current.Items["SessionId"] = _supplierInfo["SessionId"]; string securityToken = string.Empty; List<AirItinerary> itineraries = new List<AirItinerary>(); try { //1. Get the securityToken securityToken = CreateJetSession(); //2. Search flights JetConnector connector = new JetConnector(_supplierInfo.GetFlightMatrixService()); JetModel.FlightMatrixRequestRequest searchRequest = RequestTranslators.CreateFlightMatrixRequest(_supplierInfo, searchParams, securityToken); JetModel.FlightMatrixRequestResponse searchResponse = connector.DoTransaction <JetModel.FlightMatrixRequestRequest, JetModel.FlightMatrixRequestResponse>( searchRequest); itineraries = ResponseTranslators.ParseSearchResponse(_supplierInfo, searchResponse, searchParams, ref securityToken); itineraries = itineraries.Distinct(new AirItinerary()).ToList(); } catch (Exception ex) { Logger.LogException(ex, Source, "Search", Severity.Major); } finally { Task.Factory.StartNew(() => CloseJetSession(securityToken, _supplierInfo["SessionId"])); } return itineraries; } }