public async Task <DistanceTimeAttributes> GetDistanceTime(string DeparturePlace, float DestinationLatitude, float DestinationLongitude) { try { LocationAttributes SourcePosition = _getLatitudeLongitude.Get(DeparturePlace); var client = _httpClientFactory.CreateClient("GoogleClient"); Uri endpoint = client.BaseAddress; // Returns GoogleApi var Key = _iconfiguration["GoogleAPI"]; var Url = endpoint.ToString() + "maps/api/directions/json?origin=" + SourcePosition.LatitudePosition + "," + SourcePosition.LongitudePosition + "&destination=" + DestinationLatitude + "," + DestinationLongitude + " &key=" + Key; var client1 = _httpClientFactory.CreateClient(); var response = await client1.GetAsync(Url); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); RootobjectOfDirection data = JsonConvert.DeserializeObject <RootobjectOfDirection>(responseBody); DistanceTimeAttributes Data = data.routes.TransalateDistanceTime(); return(Data); } catch (Exception e) { Console.WriteLine(e.Message); } return(null); }
public async Task <PlaceAttributes> GetPlaceData(string DeparturePlace, string PlaceId) { try { //using (HttpClient client = new HttpClient()) //{ var client = _httpClientFactory.CreateClient("GoogleClient"); Uri endpoint = client.BaseAddress; // Returns GoogleApi var Key = _iconfiguration["GoogleAPI"]; var Url = endpoint.ToString() + "maps/api/place/details/json?placeid=" + PlaceId + "&key=" + Key; var client1 = _httpClientFactory.CreateClient(); var response = await client1.GetAsync(Url); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Rootobject data = JsonConvert.DeserializeObject <Rootobject>(responseBody); PlaceAttributes Data = data.result.TransalatePlaceData(Key, endpoint); DistanceTimeAttributes Journey = await _getDistanceTime.GetDistanceTime(DeparturePlace, Data.Latitude, Data.Longitude); Data.Distance = Journey.Distance; Data.Duration = Journey.Duration; return(Data); } catch (Exception e) { Console.WriteLine(e.Message); } return(null); }
public static DistanceTimeAttributes TransalateDistanceTime(this Route[] result) { try { DistanceTimeAttributes PlaceDetails = new DistanceTimeAttributes(); PlaceDetails.Duration = result[0].legs[0].duration.text; PlaceDetails.Distance = result[0].legs[0].distance.text; return(PlaceDetails); } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
public async Task <List <PlaceAttributes> > GetFilterData(List <PlaceAttributes> AllData, string DeparturePlace, int LayoverTime, string FilterKey) { try { List <PlaceAttributes> FilterData = new List <PlaceAttributes>(); for (int Index = 0; Index < AllData.Count; Index++) { DistanceTimeAttributes Journey = await _getDistanceTime.GetDistanceTime(DeparturePlace, AllData[Index].Latitude, AllData[Index].Longitude); int TotalMinutes = 0; int MinsPosition = Journey.Duration.IndexOf("m"); if (Journey.Duration.Contains("hour")) { int HourPosition = Journey.Duration.IndexOf("r"); int hour = Convert.ToInt32(Journey.Duration.Substring(0, Journey.Duration.IndexOf("h"))); int min = Convert.ToInt32(Journey.Duration.Substring(HourPosition + 1, 2)); TotalMinutes = (hour * 60) + min; } else { TotalMinutes = Convert.ToInt32(Journey.Duration.Substring(0, MinsPosition)); } int CommutingTime = (2 * TotalMinutes) + 60; int IsPossible = LayoverTime - CommutingTime; if (IsPossible > 0 && LayoverTime >= CommutingTime) { PlaceAttributes data = new PlaceAttributes(); data.Name = AllData[Index].Name; data.Address = AllData[Index].Address; data.OpenClosedStatus = AllData[Index].OpenClosedStatus; data.Image = AllData[Index].Image; data.PlaceID = AllData[Index].PlaceID; data.Rating = AllData[Index].Rating; data.Vicinity = AllData[Index].Vicinity; FilterData.Add(data); } } _allDataExchangethroughRedisCache.SaveInCache(FilterData, FilterKey); return(FilterData); } catch (Exception e) { Console.WriteLine(e.Message); } return(null); }