示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 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);
        }