public static async Task UpdateTravelInfoAsync()

in LocationHelper/LocationHelper.cs [213:247]


        public static async Task UpdateTravelInfoAsync(LocationData location, LocationData currentLocation)
        {
            var routeResultTask = MapRouteFinder.GetDrivingRouteAsync(
                currentLocation.Geopoint, location.Geopoint,
                MapRouteOptimization.TimeWithTraffic, MapRouteRestrictions.None);
            var routeResultWithoutTrafficTask = MapRouteFinder.GetDrivingRouteAsync(
                currentLocation.Geopoint, location.Geopoint,
                MapRouteOptimization.Time, MapRouteRestrictions.None);

            MapRouteFinderResult routeResult = await routeResultTask;
            MapRouteFinderResult routeResultWithoutTraffic = await routeResultWithoutTrafficTask;
            if (routeResult.Status == MapRouteFinderStatus.Success)
            {
                location.FastestRoute = routeResult.Route;
                location.CurrentTravelDistance = Math.Round(routeResult.Route.LengthInMeters * 0.00062137, 1); // convert to miles
                location.CurrentTravelTime = (int)routeResult.Route.EstimatedDuration.TotalMinutes;
                location.Timestamp = DateTimeOffset.Now;
                if (routeResultWithoutTraffic.Status == MapRouteFinderStatus.Success)
                {
                    location.CurrentTravelTimeWithoutTraffic = routeResultWithoutTraffic.Route.EstimatedDuration.Minutes;
                }
                else
                {
                    // Fall back to the with-traffic value if the request fails.
                    location.CurrentTravelTimeWithoutTraffic = routeResult.Route.EstimatedDuration.Minutes;
                }
            }
            else if (routeResult.Status == MapRouteFinderStatus.UnknownError ||
                routeResult.Status == MapRouteFinderStatus.InvalidCredentials ||
                routeResult.Status == MapRouteFinderStatus.NetworkFailure ||
                routeResult.Status == MapRouteFinderStatus.NotSupported)
            {
                throw new Exception(routeFinderUnavailableMessage);
            }
        }