Ejemplo n.º 1
0
        public async Task <IActionResult> chooseDestination(calculatepath calculatepath)
        {
            try
            {
                routePoints route = new routePoints();
                route.startingPoint = calculatepath.startingPoint;
                route.displayId     = calculatepath.displayId;
                DataTable dt1      = Data.Route.selectcoordinates(route);
                var       response = "";

                using (var client = new HttpClient())
                {
                    var a = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + dt1.Rows[0][0].ToString() + "&destinations=" + dt1.Rows[0][1].ToString() + "&mode=train|tram|subway&language=fr-FR&key= " + Common.Apikey();
                    response = await client.GetStringAsync(string.Format(a));
                }
                JObject o = JObject.Parse(@response);

                dynamic        obj   = JsonConvert.DeserializeObject(response);
                List <decimal> list  = new List <decimal>();
                var            val   = (obj.rows[0].elements).Count;
                var            value = obj.rows[0].elements[1].distance.value;

                for (var i = 0; i < (obj.rows[0].elements).Count; i++)
                {
                    int a = obj.rows[0].elements[i].distance.value;
                    list.Add(a);
                }
                var           position    = list.IndexOf(list.Max());
                List <string> numbers     = calculatepath.displayId.Split(',').ToList <string>();
                string        destination = numbers[position];

                return(StatusCode((int)HttpStatusCode.OK, new { destinationId = destination }));
            }

            catch (Exception e)
            {
                string SaveErrorLog = Data.Common.SaveErrorLog("getDestination", e.Message);
                return(StatusCode((int)HttpStatusCode.InternalServerError, new { ErrorMessage = e.Message }));
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> calculatePath(calculatepath calculatepath)
        {
            try
            {
                routePoints route = new routePoints();
                route.startingPoint = calculatepath.startingPoint;
                route.endPoint      = calculatepath.endPoint;
                route.displayId     = calculatepath.displayId;
                DataTable dt1         = Data.Route.selectcoordinates(route);
                direction routePoints = new direction();
                routePoints.origin      = dt1.Rows[0][0].ToString();
                routePoints.destination = dt1.Rows[0][1].ToString();
                routePoints.waypoints   = dt1.Rows[0][2].ToString();


                //using (var client = new HttpClient())
                //{
                //    var a = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + dt1.Rows[0][0].ToString() + "&destinations=" + dt1.Rows[0][1].ToString() + "&mode=train|tram|subway&language=fr-FR&key= " + Common.Apikey();
                //    response = await client.GetStringAsync(string.Format(a));
                //}

                ////JObject o = JObject.Parse(@response);

                ////List<JToken> acme = o.SelectTokens("$...['elements'].['distance'].['value']").ToList();
                ////var position = acme.IndexOf(acme.Max());
                //dynamic obj = JsonConvert.DeserializeObject(response);

                //List<decimal> list = new List<decimal>();
                //for (var i = 0; i < (obj.rows[0].elements).Count; i++)
                //{
                //    int a = obj.rows[0].elements[i].distance.value;
                //    list.Add(a);
                //}

                //var position = list.IndexOf(list.Max());
                //List<string> numbers = (dt1.Rows[0][1].ToString()).Split('|').ToList<string>();
                //string destination = numbers[position];
                //numbers.RemoveAt(position);
                using (var client = new HttpClient())
                {
                    var    a    = "https://maps.googleapis.com/maps/api/directions/json?origin=" + dt1.Rows[0][0].ToString() + "&destination=" + dt1.Rows[0][1].ToString() + "&waypoints=optimize:true|" + dt1.Rows[0][2].ToString() + "&key=" + Common.Apikey();
                    string path = await client.GetStringAsync(string.Format(a));

                    //JObject obj = JObject.Parse(path);

                    //List<JToken> acme1 = obj.SelectTokens("$..['routes'].['legs'].['steps'].['distance'].['value']").ToList();
                    //int miles = acme1.Sum(x => Convert.ToInt32(x));

                    dynamic obj1 = JsonConvert.DeserializeObject(path);
                    //string res = obj1.status;
                    if (((JArray)obj1.routes).Count == 0)
                    {
                        return(StatusCode((int)HttpStatusCode.InternalServerError, new { message = "Invalid Route" }));
                    }

                    int miles = 0;
                    for (var i = 0; i < (obj1.routes[0].legs).Count; i++)
                    {
                        miles = miles + (int)obj1.routes[0].legs[i].distance.value;
                    }

                    var totalmiles = String.Concat(String.Format("{0:0.00}", (miles / 1609.344)), " mi");

                    return(StatusCode((int)HttpStatusCode.OK, new { routePoints, totalmiles, path, message = "Route Created successfully" }));
                }
            }

            catch (Exception e)
            {
                string SaveErrorLog = Data.Common.SaveErrorLog("calculatePath", e.Message);

                return(StatusCode((int)HttpStatusCode.InternalServerError, new { ErrorMessage = e.Message }));
            }
        }