示例#1
0
        public Flights Result(FlightsResults oResults)
        {
            Flights retVal = new Flights();

            if (oResults != null)
            {
                foreach (Result item in oResults.Results)
                {
                    Itinerary itinerary      = item.Itineraries.FirstOrDefault();
                    Flight    outboundFlight = null;
                    Flight    inboundFlight  = null;
                    int       inboundCount   = 0;
                    int       outboundCount  = 0;

                    if (itinerary != null)
                    {
                        outboundFlight = itinerary.Outbound.Flights.FirstOrDefault();
                        inboundFlight  = itinerary.Inbound.Flights.FirstOrDefault();

                        inboundCount  = itinerary.Inbound.Flights.Count;
                        outboundCount = itinerary.Outbound.Flights.Count;
                    }

                    FlightResult itemresult = new FlightResult();
                    itemresult.TotalPrice = Decimal.Parse(item.Fare.TotalPrice, CultureInfo.InvariantCulture);
                    itemresult.Currency   = oResults.Currency;
                    itemresult.ConnectingFlightsInboundCount  = inboundCount;
                    itemresult.ConnectingFlightsOutboundCount = outboundCount;

                    if (outboundFlight != null)
                    {
                        itemresult.DepartsAt = DateTime.Parse(outboundFlight.DepartsAt);
                    }

                    if (inboundFlight != null)
                    {
                        itemresult.ArrivesAt = DateTime.Parse(inboundFlight.DepartsAt);
                    }

                    itemresult.PassengerCount = _viewModel.FlightSearch.AdultsNumber + _viewModel.FlightSearch.ChildrenNumber + _viewModel.FlightSearch.InfantsNumber;
                    itemresult.Origin         = _viewModel.FlightSearch.Origin;
                    itemresult.Destination    = _viewModel.FlightSearch.Destination;

                    retVal.Results.Add(itemresult);
                }
            }

            return(retVal);
        }
示例#2
0
        public async Task <FlightsResults> Search()
        {
            FlightsResults retVal = null;

            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(AmadeusFlightUri);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.GetAsync(_viewModel.GetFlightParametersUrl());

                if (response.IsSuccessStatusCode)
                {
                    retVal = await response.Content.ReadAsAsync <FlightsResults>();
                }
            }

            return(retVal);
        }
示例#3
0
        public void Execute(object parameter)
        {
            Flights flights = null;
            string  key     = GenerateUniqueKey();

            if (!FlightsCache.ContainsKey(key))
            {
                FlightsResults flightsResults = Task.Run(() => Search()).Result;
                flights     = Result(flightsResults);
                flights.Key = key;
                FlightsCache.Add(key, flights);
            }
            else
            {
                flights = FlightsCache[key];
            }

            DisplayFlights displayFlightsWindow = new DisplayFlights();

            ((DisplayFlightsViewModel)displayFlightsWindow.DataContext).FlightResults = flights.Results;
            displayFlightsWindow.ShowDialog();
        }