/// <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()); } }
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); }