Beispiel #1
0
        /// <summary>
        /// Fetches the flights matching the given criteria for source and destination
        /// from the backend server
        /// </summary>
        /// <param name="source">The flight criteria for the source flight</param>
        /// <param name="destination">The flight criteria for the destination</param>
        /// <returns>An <c>await</c>able <c>Task</c> containing the resulting flights</returns>
        public async Task <Flights> FetchFlightsAsync(FlightSearchCriteria source, FlightSearchCriteria destination)
        {
            var leaveDate         = source.Date ?? String.Empty;
            var searchPath        = $"{source.Name}/{destination.Name}";
            var escapedSearchPath = Uri.EscapeUriString(searchPath);
            var fullPath          = leaveDate.Length > 0
                ? $"flightPaths/{escapedSearchPath}?leave={leaveDate}"
                : $"flightPaths/{escapedSearchPath}";

            var url    = new Uri(ServerBackendUrl, fullPath);
            var result = await UserSession.HttpClient.GetStringAsync(url);

            var deserialized = JsonConvert.DeserializeObject <IDictionary <string, Flights> >(result);

            return(deserialized["data"]);
        }
        public async Task <List <Flight> > GetFlights(FlightSearchCriteria flightSearchCriteria)
        {
            var request = new HttpRequestMessage(HttpMethod.Get, $"http://localhost:57502/api/flights/search" +
                                                 $"?Adults={flightSearchCriteria.Adults}&Origin={flightSearchCriteria.Origin}&Destination={flightSearchCriteria.Destination}" +
                                                 $"&DepartureDate={flightSearchCriteria.DepartureDate.ToString("yyyy-MM-dd")}&ArrivalDate={flightSearchCriteria.ArrivalDate.ToString("yyyy-MM-dd")}");

            request.Headers.Add("Accept", "application/vnd.github.v3+json");
            request.Headers.Add("User-Agent", "PackageSearch");
            HttpResponseMessage response = await _httpClient.SendAsync(request);

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <List <Flight> >(await response.Content.ReadAsStringAsync()));
            }
            else
            {
                throw new Exception("No Flights Found For " + flightSearchCriteria.ToString());
            }
        }
Beispiel #3
0
        public async Task <List <Package> > GetPackages(PackageSearchCriteria packageSearch)
        {
            HotelSearchCriteria hsc = new HotelSearchCriteria()
            {
                Adults = packageSearch.Adults, Children = packageSearch.Children, Destination = packageSearch.Destination
            };
            FlightSearchCriteria fsc = new FlightSearchCriteria()
            {
                Origin = packageSearch.Origin, Destination = packageSearch.Destination, Adults = packageSearch.Adults, Children = packageSearch.Children, DepartureDate = packageSearch.DepartureDate.Value.Date, ArrivalDate = packageSearch.ArrivalDate.Value.Date
            };

            var hotels = await _httpClientService.GetHotels(hsc);

            var flights = await _httpClientService.GetFlights(fsc);

            var packages = hotels
                           .SelectMany(hotel => flights, (hotel, flight) => new Package {
                Flight = flight, Hotel = hotel
            })
                           .ToList();

            return(packages);
        }