Пример #1
0
        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);
        }