Example #1
0
        /// <summary>
        /// Handles any unspecified OnGet requests from user. Currently returns all details about the current order using both the Java API and the Google API in series. NOT in paralel.
        /// </summary>
        /// <param name="orderNumber"></param>
        public void OnGet(string orderNumber)
        {
            //// getting saved identity token
            //var identityToken = Task.Run(() => HttpContext.GetTokenAsync(OpenIdConnectParameterNames.IdToken)).Result;
            UpdateUserClaimsFromIdentityServer4();

            urlGetOrder  = "http://localhost:8080/server_war_exploded/root/api/order/";
            UriGetOrder  = new Uri(new Uri(urlGetOrder), orderNumber);
            orderService = new OrderService();

            Task <Order> taskOrder = orderService.GetOrderByOrderNumberAsync(UriGetOrder);

            taskOrder.Wait();
            Order = taskOrder.Result;

            urlGoogleDistanceCalculation = $"https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial" +
                                           "&origins=" +
                                           $"{Order.pickUpAddress.city.Replace(" ", "+")}," +
                                           $"{Order.pickUpAddress.zipCode.Replace(" ", "+")}," +
                                           $"{Order.pickUpAddress.country.Replace(" ", "+")}," +
                                           $"{Order.pickUpAddress.street.Replace(" ", "+")}" +
                                           "&destinations=" +
                                           $"{Order.dropOffAddress.city.Replace(" ", "+")}," +
                                           $"{Order.dropOffAddress.zipCode.Replace(" ", "+")}," +
                                           $"{Order.dropOffAddress.country.Replace(" ", "+")}," +
                                           $"{Order.dropOffAddress.street.Replace(" ", "+")}" +
                                           "&key=AIzaSyCbrS4DNvvkVu_i4iEAWM5T_5K2H0Ck3_Y&";

            Task <GoogleRoute> taskGoogleRoute = orderService.GetRouteInformationFromGoogleAPI(urlGoogleDistanceCalculation);

            taskGoogleRoute.Wait();
            GoogleRoute = taskGoogleRoute.Result;
        }
        /// <summary>
        /// GET request to the Google Maps Distance Matrix API returning distance and travel time information from specified point A to B
        /// </summary>
        /// <param name="urlWithAPIKey">Google API fully formed URL with request details</param>
        /// <returns></returns>
        public async Task <GoogleRoute> GetRouteInformationFromGoogleAPI(string urlWithAPIKey)
        {
            Uri         uri         = new Uri(urlWithAPIKey);
            GoogleRoute googleRoute = null;

            string jsonString = await GetJsonStringAsync(uri);

            googleRoute = JsonConvert.DeserializeObject <GoogleRoute>(jsonString);

            return(googleRoute);
        }
Example #3
0
 public EventDetailViewModel(PlannedEvent pEvent, GoogleRoute rt)
 {
     currentEvent  = pEvent;
     route         = rt;
     EventTitle    = pEvent.EventName;
     EventTime     = pEvent.EventTime;
     StartPos      = route.getStartLocation();
     EndPos        = route.getEndLocation();
     RemainingTime = pEvent.RemainingTime;
     RequiredTime  = pEvent.RequiredTime;
     stepModels    = new ObservableCollection <StepDisplayModel>();
     loadRouteDetails();
     loadStatistics();
 }
        private void drawPolylines(GoogleRoute route)
        {
            Position start = viewModel.currentEvent.startPos, end = viewModel.currentEvent.endPos;
            var      polyLine = new Xamarin.Forms.GoogleMaps.Polyline();

            polyLine.StrokeColor = Color.Orange;
            polyLine.StrokeWidth = 10f;
            polyLine.Positions.Add(start);
            foreach (Step step in route.legs[0].steps)
            {
                string polyStr = step.polyline.points;
                List <Xamarin.Essentials.Location> polyPoints = Configs.DecodePolylinePoints(polyStr);
                foreach (var loc in polyPoints)
                {
                    polyLine.Positions.Add(new Position(loc.Latitude, loc.Longitude));
                }
            }
            polyLine.Positions.Add(end);
            Thread.Sleep(500);
            EventDetailMap.Polylines.Add(polyLine);
        }
        public EventDetailPage(PlannedEvent pEvent, GoogleRoute route)
        {
            InitializeComponent();
            viewModel                = new EventDetailViewModel(pEvent, route);
            BindingContext           = viewModel;
            StepList.ItemsSource     = viewModel.stepModels;
            AccuracyList.ItemsSource = viewModel.routeStatList;

            AccuracyList.ItemTapped += (object sender, ItemTappedEventArgs e) => {
                if (e.Item == null)
                {
                    return;
                }
                Task.Delay(500);
                if (sender is ListView lv)
                {
                    lv.SelectedItem = null;
                }
                Database.currentAccModel = (e.Item as EventDetailViewModel.StatisticModel).AccuracyPerformances;
                loadStatisticsDetail();
            };

            StepList.ItemTapped += (object sender, ItemTappedEventArgs e) => {
                if (e.Item == null)
                {
                    return;
                }
                Task.Delay(500);
                if (sender is ListView lv)
                {
                    lv.SelectedItem = null;
                }
            };
            initLocation(pEvent);
            drawPolylines(route);
        }