예제 #1
0
        private async Task RefreshRideDetails()
        {
            while (RideState == RideStates.Ride)
            {
                rideDetails = await AppConstants.ShyftClient.RetrieveRideDetails(currentRideId);

                rideStatusBackground.Visibility = Visibility.Visible;
                rideStatusTextBlock.Text        = rideDetails.Status.Humanize(LetterCasing.Title);
                if (rideDetails.Status == LyftConstants.RideStatus.Pending)
                {
                    // Orange
                    rideStatusBackground.Background = new SolidColorBrush(AppConstants.GetColor("#FF8C00"));
                    SetCancelButtonVisibility(rideDetails);
                }
                else if (rideDetails.Status == LyftConstants.RideStatus.Accepted)
                {
                    // Yellow
                    rideStatusBackground.Background = new SolidColorBrush(AppConstants.GetColor("#FFB900"));
                    SetCancelButtonVisibility(rideDetails);
                    SetVehicleInfo(rideDetails);
                }
                else if (rideDetails.Status == LyftConstants.RideStatus.Arrived)
                {
                    // Light Green
                    rideStatusBackground.Background = new SolidColorBrush(AppConstants.GetColor("#00CC6A"));
                    SetCancelButtonVisibility(rideDetails);
                    SetVehicleInfo(rideDetails);
                    UpdateDriverLocation(rideDetails.Location);
                    UpdateRideEtaInfo(rideDetails.Origin);
                }
                else if (rideDetails.Status == LyftConstants.RideStatus.PickedUp)
                {
                    // Pink
                    rideStatusBackground.Background = new SolidColorBrush(AppConstants.LyftPink);
                    SetCancelButtonVisibility(rideDetails);
                    SetVehicleInfo(rideDetails);
                    UpdateDriverLocation(rideDetails.Location);
                    UpdateRideEtaInfo(rideDetails.Destination);
                }
                else if (rideDetails.Status == LyftConstants.RideStatus.DroppedOff)
                {
                    // Blue
                    rideStatusBackground.Background = new SolidColorBrush(AppConstants.LyftMulberry);
                    await SetRideState(RideStates.Complete);
                }
                else if (rideDetails.Status == LyftConstants.RideStatus.Canceled)
                {
                    await SetupPin(RideStates.Pickup, null, rideDetails.Origin);

                    pickupLocation = startLocation.Location.Position;
                    await SetupPin(RideStates.Dropoff, null, rideDetails.Destination);

                    dropoffLocation = endLocation.Location.Position;
                    await SetRideState(RideStates.RideStaging);
                }
                await Task.Delay(TimeSpan.FromMilliseconds(500));
            }
        }
예제 #2
0
 private void SetCancelButtonVisibility(RideDetail rideDetails)
 {
     if (rideDetails.Status != LyftConstants.RideStatus.Pending &&
         rideDetails.CanCancel != null && rideDetails.CanCancel.Count > 0 &&
         rideDetails.CanCancel.Contains("passenger"))
     {
         cancelButton.Visibility = Visibility.Visible;
     }
     else
     {
         cancelButton.Visibility = Visibility.Collapsed;
     }
 }
예제 #3
0
 private void SetVehicleInfo(RideDetail rideDetails)
 {
     vehicleInfoGrid.Visibility = Visibility.Visible;
     vehicleImage.Source        = new BitmapImage(new Uri(rideDetails.Vehicle.ImageUrl));
     vehicleInfoTextBlock.Text  = $"{rideDetails.Vehicle.Year} {rideDetails.Vehicle.Color} {rideDetails.Vehicle.Make} {rideDetails.Vehicle.Model}\n" +
                                  $"{rideDetails.Vehicle.LicensePlateState} {rideDetails.Vehicle.LicensePlate}";
     if (!string.IsNullOrEmpty(rideDetails.BeaconColor))
     {
         ampColorRectangle.Visibility = Visibility.Visible;
         ampColorRectangle.Fill       = new SolidColorBrush(AppConstants.GetColor(rideDetails.BeaconColor));
     }
     else
     {
         ampColorRectangle.Visibility = Visibility.Collapsed;
     }
     UpdateDriverLocation(rideDetails.Location);
     if (rideDetails.Origin.EtaSeconds.HasValue)
     {
         rideEtaTextBlock.Visibility = Visibility.Visible;
         rideEtaTextBlock.Text       = $"Arrives in {TimeSpan.FromSeconds(rideDetails.Origin.EtaSeconds.Value).Humanize(2)}";
     }
 }