public ActionResult InterpretarRespuesta(dynamic respuesta) { var data = respuesta[0]; JObject resultado = JObject.Parse(data); IList <JToken> results = resultado["OriginDestinationInformation"].Children().ToList(); List <OriginDestinationInformation> InformationList = new List <OriginDestinationInformation>(); foreach (JToken result in results) { OriginDestinationInformation Information = new OriginDestinationInformation(); //Llenar ida y vuelta IList <JToken> opcionesVuelo = result["OriginDestinationOptions"].Children().ToList(); foreach (var opcion in opcionesVuelo) { if (opcion.Path.Contains("OriginDestinationOptions.OriginDestinationOption")) { OriginDestinationOption ListadoOpcionVuelo = new OriginDestinationOption(); List <FlightSegment> ListadoSegmentosVuelos = new List <FlightSegment>(); Information.DepartureDateTime = result["DepartureDateTime"].ToString(); Information.OriginLocation = result["OriginLocation"].ToString(); Information.DestinationLocation = result["DestinationLocation"].ToString(); dynamic segmentos = opcion.ToList(); //varios segmentos de vuelo for (int v = 0; v < segmentos[0].Count; v++) { var nivelsuperior = segmentos[0]; var vuelo = nivelsuperior[v]["FlightSegment"]; int i = 0; List <BookingClassAvail> BookingClassAvailList = new List <BookingClassAvail>(); var DepartureDateTime = string.Empty; var ArrivalDateTime = string.Empty; var StopQuantity = string.Empty; var FlightNumber = string.Empty; var JourneyDuration = string.Empty; var DepartureAirport = string.Empty; var ArrivalAirport = string.Empty; var Equipment = string.Empty; var MarketingAirline = string.Empty; var Meal = string.Empty; var RPH = string.Empty; var CabinType = string.Empty; foreach (var item in vuelo) { if (i == 0)//Datos del vuelo { DepartureDateTime = item.First["DepartureDateTime"].Value; ArrivalDateTime = item.First["ArrivalDateTime"].Value; StopQuantity = item.First["StopQuantity"].Value; FlightNumber = item.First["FlightNumber"].Value; JourneyDuration = item.First["JourneyDuration"].Value; } if (i == 1) { var nivel1 = item.First["@attributes"]; DepartureAirport = nivel1["LocationCode"].Value; } if (i == 2) { var nivel1 = item.First["@attributes"]; ArrivalAirport = nivel1["LocationCode"].Value; } if (i == 3) { var nivel1 = item.First["@attributes"]; Equipment = nivel1["AirEquipType"].Value; } if (i == 4) { var nivel1 = item.First["@attributes"]; MarketingAirline = nivel1["CompanyShortName"].Value; } if (i == 5) { var nivel1 = item.First["@attributes"]; Meal = nivel1["MealCode"].Value; } if (i == 6) { var nivel1 = item.First["@attributes"]; CabinType = nivel1["CabinType"].Value; RPH = nivel1["RPH"].Value; } if (i == 7) { for (int x = 0; x < item.First.Count; x++) { var nivel1 = item.First; var nivel2 = nivel1[x]["@attributes"]; var ResBookDesigCode = nivel2["ResBookDesigCode"].Value; var ResBookDesigQuantity = nivel2["ResBookDesigQuantity"].Value; var RPHBooking = nivel2["RPH"].Value; BookingClassAvail bookingClassAvail = new BookingClassAvail { ResBookDesigCode = ResBookDesigCode, ResBookDesigQuantity = ResBookDesigQuantity, RPHBooking = RPHBooking }; BookingClassAvailList.Add(bookingClassAvail); } } i++; } FlightSegment nuevoSegmento = new FlightSegment { DepartureDateTime = DepartureDateTime, ArrivalDateTime = ArrivalDateTime, StopQuantity = StopQuantity, FlightNumber = FlightNumber, JourneyDuration = JourneyDuration, DepartureAirport = DepartureAirport, ArrivalAirport = ArrivalAirport, Equipment = Equipment, MarketingAirline = MarketingAirline, Meal = Meal, RPH = RPH, CabinType = CabinType, BookingClassAvailList = BookingClassAvailList }; ListadoSegmentosVuelos.Add(nuevoSegmento); } ListadoOpcionVuelo.ListFlightSegment = ListadoSegmentosVuelos; Information.OriginDestinationOptions = ListadoOpcionVuelo; InformationList.Add(Information); } else { Information.DepartureDateTime = result["DepartureDateTime"].ToString(); Information.OriginLocation = result["OriginLocation"].ToString(); Information.DestinationLocation = result["DestinationLocation"].ToString(); Information.OriginDestinationOptions = null; InformationList.Add(Information); } } } return(Json(InformationList)); }
static bool MakeRequest(APIAirlineSearch filters) { bool result = false; try { int MaxRequestAttempts = FlightsEngine.Models.Constants.Constants.MaxRequestAttempts; int AttemptsNumber = 1; DateTime originalFromDateMin = filters.FromDateMin; DateTime originalToDateMax = (filters.ToDateMax ?? filters.FromDateMax); DateTime FromDateMin = originalFromDateMin; DateTime ToDateMax = originalToDateMax; var context = new TemplateEntities1(); SearchTripProviderService _searchTripProviderService = new SearchTripProviderService(context); int SearchTripProviderId = _searchTripProviderService.GetSearchTripProviderId(originalFromDateMin, originalToDateMax, filters.SearchTripWishesId, Providers.TurkishAirlines); List <TripItem> Trips = new List <TripItem>(); AttemptsNumber = 1; result = false; while (!result && AttemptsNumber <= MaxRequestAttempts) { try { AttemptsNumber = AttemptsNumber + 1; string url = "https://api.turkishairlines.com/test/getAvailability"; var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; httpWebRequest.Headers.Add("Accept-Language", "en-US"); httpWebRequest.Headers.Add("apisecret", Secret); httpWebRequest.Headers.Add("apikey", Key); using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { RequestBody body = new RequestBody(); body.ReducedDataIndicator = false; if (filters.Return) { body.RoutingType = "r"; } else { body.RoutingType = "o"; } body.PassengerTypeQuantity.Add(new PassengerTypeQuantity("adult", filters.AdultsNumber)); body.PassengerTypeQuantity.Add(new PassengerTypeQuantity("child", filters.ChildrenNumber)); body.PassengerTypeQuantity.Add(new PassengerTypeQuantity("infant", filters.BabiesNumber)); OriginDestinationInformation OneWayItem = new OriginDestinationInformation(); OneWayItem.CabinPreferences.Add(new CabinPreference("ECONOMY")); OneWayItem.CabinPreferences.Add(new CabinPreference("BUSINESS")); OneWayItem.DepartureDateTime.Date = "10DEC"; OneWayItem.DepartureDateTime.WindowAfter = "P3D"; OneWayItem.DepartureDateTime.WindowBefore = "P3D"; OneWayItem.OriginLocation.LocationCode = "IST"; OneWayItem.OriginLocation.MultiAirportCityInd = false; OneWayItem.DestinationLocation.LocationCode = "ESB"; OneWayItem.OriginLocation.MultiAirportCityInd = false; body.OriginDestinationInformation.Add(OneWayItem); if (filters.Return) { OriginDestinationInformation ReturnItem = new OriginDestinationInformation(); ReturnItem.CabinPreferences.Add(new CabinPreference("ECONOMY")); ReturnItem.CabinPreferences.Add(new CabinPreference("BUSINESS")); ReturnItem.DepartureDateTime.Date = "27DEC"; ReturnItem.DepartureDateTime.WindowAfter = "P3D"; ReturnItem.DepartureDateTime.WindowBefore = "P3D"; ReturnItem.OriginLocation.LocationCode = "ESB"; ReturnItem.OriginLocation.MultiAirportCityInd = false; ReturnItem.DestinationLocation.LocationCode = "IST"; ReturnItem.OriginLocation.MultiAirportCityInd = false; body.OriginDestinationInformation.Add(ReturnItem); } string json = new JavaScriptSerializer().Serialize(body); streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } HttpWebResponse httpResponse = null; try { httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); result = true; } catch (WebException e) { result = false; string webError = FlightsEngine.Utils.Logger.GenerateWebError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, filters.ToSpecialString()); } if (result) { using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var requestResult = streamReader.ReadToEnd(); if (!String.IsNullOrWhiteSpace(requestResult)) { } } } System.Threading.Thread.Sleep(200); } catch (Exception ex) { result = false; FlightsEngine.Utils.Logger.GenerateError(ex, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "MakeRequest LOOP ERROR :" + filters.ToSpecialString()); } } TripsService _tripService = new TripsService(context); _tripService.InsertTrips(Trips); } catch (Exception e) { result = false; FlightsEngine.Utils.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "MakeRequest ERROR :" + filters.ToSpecialString()); } return(result); }