public static Airport_Info GetAirport_Info(string code, JObject dictionary)
        {
            Airport_Info airport_Info = new Airport_Info();

            string cityCode    = dictionary["locations"][code]["cityCode"].ToString();
            string countryCode = dictionary["locations"][code]["countryCode"].ToString();;

            var foundCity    = city_list.SingleOrDefault(item => item.codeIataCity == cityCode);
            var foundCountry = country_list.SingleOrDefault(item => item.codeIso2Country == countryCode);

            airport_Info.airport = code;
            airport_Info.city    = foundCity.nameCity;
            airport_Info.country = foundCountry.nameCountry;
            return(airport_Info);
        }
        public async Task <IActionResult> Search(string flight_type,
                                                 string departure, string arrival,
                                                 string from, string to, int adults, int children, int infants,
                                                 string travelClass, bool noneStop
                                                 )
        {
            //Set Access Token Header
            if (!tokenGet)
            {
                var access_token = await GetAccessToken();

                client.DefaultRequestHeaders.Authorization
                         = new AuthenticationHeaderValue("Bearer", access_token);
                tokenGet = true;
            }
            if (departure == null)
            {
                return(View(currentSearchResult));
            }
            //Get Flight Search Result
            var json = await GetFlightSearchResult(flight_type, departure, arrival, from, to,
                                                   adults, children, infants, travelClass, noneStop);

            List <FlightSearch> searchResult = new List <FlightSearch>();

            if (json["errors"] == null)
            {
                //Get All Data
                JArray data   = (JArray)json["data"];
                int    length = data.Count;
                flightData = data;

                //Get Dictionary
                JObject dictionary = (JObject)json["dictionaries"];

                for (int i = 0; i < length; i++)
                {
                    FlightSearch searchItem = new FlightSearch();
                    JObject      dataItem   = (JObject)data[i];
                    searchItem.Id         = Convert.ToInt32(dataItem["id"].ToString());
                    searchItem.TotalPrice = new Price {
                        Value    = dataItem["price"]["grandTotal"].ToString(),
                        Currency = dataItem["price"]["currency"].ToString(),
                    };
                    searchItem.TravelerPrices = new List <TravelerPrice>();

                    JArray travelerPricing = (JArray)dataItem["travelerPricings"];
                    for (int j = 0; j < travelerPricing.Count; j++)
                    {
                        JObject travelerItem = (JObject)travelerPricing[j];
                        searchItem.TravelerPrices.Add(
                            new TravelerPrice {
                            Type     = travelerItem["travelerType"].ToString(),
                            Value    = travelerItem["price"]["total"].ToString(),
                            Currency = travelerItem["price"]["currency"].ToString()
                        }
                            );
                    }

                    searchItem.Itineraries = new List <Itinerary>();
                    JArray itin_arr = (JArray)dataItem["itineraries"];
                    for (int j = 0; j < itin_arr.Count; j++)
                    {
                        JObject itin        = (JObject)itin_arr[j];
                        JArray  segment_arr = (JArray)itin["segments"];
                        for (int k = 0; k < segment_arr.Count; k++)
                        {
                            JObject   segment  = (JObject)segment_arr[k];
                            Itinerary itinItem = new Itinerary();

                            //Departure Itinerary data
                            Airport_Info departure_airport_info = GetAirport_Info(segment["departure"]["iataCode"].ToString(), dictionary);
                            itinItem.departure_airport = departure_airport_info.airport;
                            itinItem.departure_city    = departure_airport_info.city;
                            itinItem.departure_country = departure_airport_info.country;
                            itinItem.departure_date    = segment["departure"]["at"].ToString();

                            //Arrival Itinerary data
                            Airport_Info arrival_airport_info = GetAirport_Info(segment["arrival"]["iataCode"].ToString(), dictionary);
                            itinItem.arrival_airport = arrival_airport_info.airport;
                            itinItem.arrival_city    = arrival_airport_info.city;
                            itinItem.arrival_country = arrival_airport_info.country;
                            itinItem.arrival_date    = segment["arrival"]["at"].ToString();

                            //Get Aircraft
                            string aircraft_code = segment["aircraft"]["code"].ToString();
                            itinItem.aircraft = dictionary["aircraft"][aircraft_code].ToString();

                            //Get Airline
                            string airline_code = segment["carrierCode"].ToString();
                            itinItem.airline = dictionary["carriers"][airline_code].ToString();

                            searchItem.Itineraries.Add(itinItem);
                        }
                    }

                    searchResult.Add(searchItem);
                }
                //contentString = json.ToString();
                currentSearchResult = searchResult;
            }
            return(View(searchResult));
        }