Exemplo n.º 1
0
 private void SendTripMessage(PageLoadMessage page)
 {
     if (page.Page == ApplicationPage.TripDetails)
     {
         PathResultsModel.SetSelectedPathOption(PathResultsModel.SelectedPathOption.Letter);
     }
 }
Exemplo n.º 2
0
        protected override void PageLoaded()
        {
            base.PageLoaded();

            if (base.InMemoryApplicationSettingModel.GetSetting(ApplicationSetting.ShowTripApplicationBar).Value)
            {
                ApplicationBarIsVisibile = true;
            }
            else
            {
                ApplicationBarIsVisibile = false;
            }

            Messenger.Default.Register <FlickMessage>(this, (action) => FlickPathItems(action));

            PageTitleMessage.Send(AppResources.HeaderTripDetails);

            PathResultsModel = SimpleIoc.Default.GetInstance <PathResultsModel>();
            PathResultsModel.SelectedRouteStops.Clear();

            if (PathResultsModel.SelectedPathOption == null)
            {
                PathResultsModel.SetSelectedPathOption("A");
            }

            this.timer.Interval = new TimeSpan(0, 0, 60 - DateTime.Now.Second);
            this.timer.Start();

            tripResultsModel = SimpleIoc.Default.GetInstance <TripResultsModel>();
        }
Exemplo n.º 3
0
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

#if !DEBUG
            FlurryWP8SDK.Api.LogPageView();
#endif

            string tripId;

            if (NavigationContext.QueryString.TryGetValue("tripId", out tripId))
            {
                if (!String.IsNullOrEmpty(tripId))
                {
                    IUnitOfWork unitOfWork = SimpleIoc.Default.GetInstance <IUnitOfWork>();

                    Path pinnedPath = unitOfWork.PathRepository.GetPinned(Guid.Parse(tripId), unitOfWork.PublicTransportOperatorRepository.GetAll());
                    User user       = unitOfWork.UserRepository.GetUser();

                    List <PathOption> pathOptions = new List <PathOption>();
                    pathOptions.Add(pinnedPath.PathOption);

                    PathResultsModel results = new PathResultsModel(new Address(pinnedPath.LocationText, pinnedPath.LocationText, pinnedPath.Location), new Address(pinnedPath.DestinationText, pinnedPath.DestinationText, pinnedPath.Destination), pathOptions, SimpleIoc.Default.GetInstance <IBumbleApiService>(), user);

                    SimpleIoc.Default.Unregister <PathResultsModel>();

                    SimpleIoc.Default.Register <PathResultsModel>(() =>
                    {
                        return(results);
                    });

                    SimpleIoc.Default.Unregister <TripResultsModel>();

                    SimpleIoc.Default.Register <TripResultsModel>(() =>
                    {
                        return(new TripResultsModel());
                    });
                }
            }

            NavigationContext.QueryString.Clear();
        }
Exemplo n.º 4
0
 private void NextButton()
 {
     PathResultsModel.NextPathOption();
 }
Exemplo n.º 5
0
 private void PreviousButton()
 {
     PathResultsModel.PreviousPathOption();
 }
Exemplo n.º 6
0
        private void ContinuePreviousTrip()
        {
            if (ContrinuePreviousTripImageOption == "/Images/64/W/TripKarmaWhite.png")
            {
                // Check if we must load last trip from the database first.
                if (!SimpleIoc.Default.ContainsCreated <PathResultsModel>())
                {
                    IEnumerable <Path> paths = UnitOfWork.PathRepository.GetAllCached(UnitOfWork.PublicTransportOperatorRepository.GetAll());

                    List <PathOption> pathOptions = paths.Select(x => x.PathOption).ToList();

                    Path firstPath = paths.First();

                    IEnumerable <TransportMode> modes = UnitOfWork.TransportModeRepository.GetAll();
                    // Attempt to add an uber option.
                    if (modes.Where(x => x.IsEnabled).Select(x => x.ApplicationTransportMode).Contains(ApplicationTransportMode.Taxi) &&
                        base.InMemoryApplicationSettingModel.GetSetting(ApplicationSetting.UseUber).Value &&
                        !UnitOfWork.UberTripRepository.ExistsCached())
                    {
                        double maxDurationInMinutes = (pathOptions.Where(x => !x.IsUber).SelectMany(x => x.Stages).Max(x => x.EndTime) - DateTime.Now).TotalMinutes;
                        pathOptions.Add(new PathOption(pathOptions.Count(), uberService, firstPath.Location, firstPath.Destination, maxDurationInMinutes, user.UberInfo.AccessToken));
                    }

                    PathResultsModel results = new PathResultsModel(new Address(firstPath.LocationText, firstPath.LocationText, firstPath.Location), new Address(firstPath.DestinationText, firstPath.DestinationText, firstPath.Destination), pathOptions, BumbleApiService, user);

                    if (SimpleIoc.Default.IsRegistered <PathResultsModel>())
                    {
                        SimpleIoc.Default.Unregister <PathResultsModel>();
                    }

                    SimpleIoc.Default.Register <PathResultsModel>(() =>
                    {
                        return(results);
                    });

                    if (SimpleIoc.Default.IsRegistered <TripResultsModel>())
                    {
                        SimpleIoc.Default.Unregister <TripResultsModel>();
                    }

                    SimpleIoc.Default.Register <TripResultsModel>(() =>
                    {
                        return(new TripResultsModel());
                    });
                }

                if (base.InMemoryApplicationSettingModel.GetSetting(ApplicationSetting.SkipTripSelection).Value)
                {
                    this.NavigationService.NavigateTo("/Views/TripDetails.xaml");
                }
                else
                {
                    this.NavigationService.NavigateTo("/Views/TripSelection.xaml");
                }
            }
            else
            {
                // Check if uber trip isn't already in memory
                if (!SimpleIoc.Default.ContainsCreated <UberTrip>())
                {
                    UberTrip uberTrip = UnitOfWork.UberTripRepository.GetAll().FirstOrDefault();

                    if (uberTrip != null)
                    {
                        if (SimpleIoc.Default.IsRegistered <UberTrip>())
                        {
                            SimpleIoc.Default.Unregister <UberTrip>();
                        }

                        SimpleIoc.Default.Register <UberTrip>(() =>
                        {
                            return(uberTrip);
                        });

                        this.NavigationService.NavigateTo("/Views/UberTripDetails.xaml");
                    }
                }
                else
                {
                    this.NavigationService.NavigateTo("/Views/UberTripDetails.xaml");
                }
            }
        }
Exemplo n.º 7
0
        private void Drumble()
        {
            if (!this.LocationSearchBoxModel.IsValid())
            {
                base.ShowPopup(CustomPopupMessageType.Error, AppResources.WhereToLocationErrorPopupText, AppResources.CustomPopupGenericOkMessage, null);
            }
            else if (!this.DestinationSearchBoxModel.IsValid())
            {
                base.ShowPopup(CustomPopupMessageType.Error, AppResources.WhereToDestinationErrorPopupText, AppResources.CustomPopupGenericOkMessage, null);
            }
            else if (departureTimeCustom != null && departureTimeCustom < DateTime.Now.AddMinutes(-5))
            {
                base.ShowPopup(CustomPopupMessageType.Error, AppResources.WhereToCustomDateErrorPopupText, AppResources.CustomPopupGenericOkMessage, null);
            }
            else
            {
                IEnumerable <TransportMode> modes = UnitOfWork.TransportModeRepository.GetAll();

                if (!modes.Any(x => x.IsEnabled))
                {
                    base.ShowPopup(CustomPopupMessageType.Error, AppResources.WhereToNoModesErrorPopupText, AppResources.CustomPopupGenericOkMessage, null);
                    return;
                }

                IEnumerable <OperatorSetting> operatorSettings = UnitOfWork.OperatorSettingRepository.GetAll();

                if (!operatorSettings.Any(x => x.IsEnabled))
                {
                    base.ShowPopup(CustomPopupMessageType.Error, AppResources.WhereToNoModesErrorPopupText, AppResources.CustomPopupGenericOkMessage, null);
                    return;
                }

                DrumbleButtonIsEnabled        = false;
                DrumbleCancelButtonVisibility = Visibility.Visible;
                ShowHeaderLoader();

                Action getPath = async() =>
                {
                    try
                    {
                        DateTime createdDate = DateTime.UtcNow;

                        // Try save a recent trip if user allows it.
                        if (base.InMemoryApplicationSettingModel.GetSetting(ApplicationSetting.StoreRecent).Value)
                        {
                            Recent recentTripLocation = new Recent(this.LocationSearchBoxModel.TripOptions.Location, this.LocationSearchBoxModel.TripOptions.Text, createdDate, createdDate);
                            UnitOfWork.RecentTripRepository.Insert(recentTripLocation);

                            Recent recentTripDestination = new Recent(this.DestinationSearchBoxModel.TripOptions.Location, this.DestinationSearchBoxModel.TripOptions.Text, createdDate, createdDate);
                            UnitOfWork.RecentTripRepository.Insert(recentTripDestination);

                            UnitOfWork.Save();
                        }

                        int?     timeOffSetInMinutes  = null;
                        DateTime?seletedDepartureDate = null;

                        if (selectedPredefinedDepartureTime != null)
                        {
                            timeOffSetInMinutes = selectedPredefinedDepartureTime.DepartureTimeInMinutes;
                        }
                        else if (departureTimeCustom != null)
                        {
                            seletedDepartureDate = departureTimeCustom.Value.ToUniversalTime();
                        }
                        else
                        {
                            timeOffSetInMinutes = 0;
                        }

                        List <string> excludedModes     = modes.Where(x => x.IsEnabled == false).Select(x => x.ApplicationTransportMode.ToString()).ToList();
                        List <string> excludedOperators = operatorSettings.Where(x => x.IsEnabled == false).Select(x => x.OperatorName).ToList();

                        cancellationTokenSource = new CancellationTokenSource();

                        IEnumerable <PathOption> pathOptionResults = await BumbleApiService.Path(cancellationTokenSource.Token, UnitOfWork.UserRepository.GetUser(), this.LocationSearchBoxModel.TripOptions.Location, this.DestinationSearchBoxModel.TripOptions.Location, isDeparting, seletedDepartureDate, timeOffSetInMinutes, excludedModes, excludedOperators);

                        List <PathOption> pathOptions = pathOptionResults.ToList();

                        // Attempt to add an uber option.
                        if (modes.Where(x => x.IsEnabled).Select(x => x.ApplicationTransportMode).Contains(ApplicationTransportMode.Taxi) &&
                            base.InMemoryApplicationSettingModel.GetSetting(ApplicationSetting.UseUber).Value &&
                            !UnitOfWork.UberTripRepository.ExistsCached())
                        {
                            double maxDurationInMinutes = (!pathOptions.Any()) ? 0 : (pathOptions.Where(x => !x.IsUber).SelectMany(x => x.Stages).Max(x => x.EndTime) - DateTime.Now).TotalMinutes;
                            pathOptions.Add(new PathOption(pathOptions.Count(), uberService, LocationSearchBoxModel.TripOptions.Location, DestinationSearchBoxModel.TripOptions.Location, maxDurationInMinutes, (user.UberInfo == null) ? null : user.UberInfo.AccessToken));
                        }

                        if (!pathOptions.Any())
                        {
                            base.ShowPopup(CustomPopupMessageType.Information, AppResources.WhereToNoResultsFound, AppResources.CustomPopupGenericOkMessage, null);

                            HideHeaderLoader();
                            DrumbleButtonIsEnabled        = true;
                            DrumbleCancelButtonVisibility = Visibility.Collapsed;
                            return;
                        }

                        DateTime startDate = DateTime.Now;
                        UnitOfWork.PathRepository.RemoveAll();
                        UnitOfWork.Save();

                        foreach (PathOption pathOption in pathOptions.Where(x => !x.IsUber))
                        {
                            if (pathOption.EndTime != null)
                            {
                                UnitOfWork.PathRepository.Insert(new Path(pathOption.TripId, startDate, pathOption.EndTime.Value, LocationSearchBoxModel.TripOptions.Text, DestinationSearchBoxModel.TripOptions.Text, LocationSearchBoxModel.TripOptions.Location, DestinationSearchBoxModel.TripOptions.Location, false, pathOption.JsonSerializedObject, pathOption.Order));
                            }
                        }

                        UnitOfWork.Save();

                        PathResultsModel results = new PathResultsModel(this.LocationSearchBoxModel.TripOptions.Address, this.DestinationSearchBoxModel.TripOptions.Address, pathOptions, BumbleApiService, user);

                        SimpleIoc.Default.Unregister <PathResultsModel>();

                        SimpleIoc.Default.Register <PathResultsModel>(() =>
                        {
                            return(results);
                        });

                        SimpleIoc.Default.Unregister <TripResultsModel>();

                        SimpleIoc.Default.Register <TripResultsModel>(() =>
                        {
                            return(new TripResultsModel());
                        });

                        if (base.InMemoryApplicationSettingModel.GetSetting(ApplicationSetting.SkipTripSelection).Value)
                        {
                            this.NavigationService.NavigateTo("/Views/TripDetails.xaml");
                        }
                        else
                        {
                            this.NavigationService.NavigateTo("/Views/TripSelection.xaml");
                        }
                    }
                    catch (Exception e)
                    {
                        if (e.Message != "Cancelled")
                        {
                            base.ShowPopup(CustomPopupMessageType.Error, e.Message, AppResources.CustomPopupGenericOkMessage, null);
                        }
                    }

                    HideHeaderLoader();
                    DrumbleButtonIsEnabled        = true;
                    DrumbleCancelButtonVisibility = Visibility.Collapsed;
                };

                DispatcherHelper.CheckBeginInvokeOnUI(getPath);
            }
        }