コード例 #1
0
        public VehicleTypeService(INetworkRoamingService networkRoamingService, ICacheService cacheService)
        {
            _networkRoamingService = networkRoamingService;
            _cacheService          = cacheService;

            Observe(networkRoamingService.GetAndObserveMarketSettings(), marketSettings => MarketChanged(marketSettings));
        }
コード例 #2
0
        public OrderReviewViewModel
        (
            IOrderWorkflowService orderWorkflowService,
            IPaymentService paymentService,
            IAccountService accountService,
            IVehicleTypeService vehicleTypeService,
            INetworkRoamingService networkRoamingService
        )
        {
            _vehicleTypeService    = vehicleTypeService;
            _orderWorkflowService  = orderWorkflowService;
            _accountService        = accountService;
            _paymentService        = paymentService;
            _networkRoamingService = networkRoamingService;

            Observe(_orderWorkflowService.GetAndObserveBookingSettings(), settings => SettingsUpdated(settings));
            Observe(_orderWorkflowService.GetAndObservePickupAddress(), address => Address = address);
            Observe(_orderWorkflowService.GetAndObservePickupDate(), DateUpdated);
            //We are throttling to prevent cases where we can cause the app to become unresponsive after typing fast.
            Observe(_orderWorkflowService.GetAndObserveNoteToDriver().Throttle(TimeSpan.FromMilliseconds(500)), note => Note = note);
            Observe(_orderWorkflowService.GetAndObserveTipIncentive().Throttle(TimeSpan.FromMilliseconds(500)), tipIncentive => DriverBonus = tipIncentive);
            Observe(_orderWorkflowService.GetAndObservePromoCode(), code => PromoCode = code);
            Observe(_networkRoamingService.GetAndObserveMarketSettings(), MarketChanged);

            _driverBonus = 5;

            GetIsCmtRideLinq().FireAndForget();
        }
コード例 #3
0
        private async Task <Tariff> GetMarketTariffIfPossible()
        {
            var marketSettings = await _networkRoamingService.GetAndObserveMarketSettings().Take(1);

            return(marketSettings.IsLocalMarket || !marketSettings.OverrideEnableAppFareEstimates
                ? null
                : marketSettings.MarketTariff);
        }
コード例 #4
0
 public IObservable <bool> GetAndObserveIsUsingGeo()
 {
     return(_networkRoamingService.GetAndObserveMarketSettings()
            .Select(marketSettings => !marketSettings.IsLocalMarket
                                 ? _appSettings.Data.ExternalAvailableVehiclesMode == ExternalAvailableVehiclesModes.Geo
                                 : _appSettings.Data.LocalAvailableVehiclesMode == LocalAvailableVehiclesModes.Geo
                    ));
 }
コード例 #5
0
        private async Task HandleChargeTypeSelectionAccess()
        {
            var marketSettings = await _networkRoamingService.GetAndObserveMarketSettings().Take(1).ToTask();

            var isLocalMarket = marketSettings.IsLocalMarket;

            // We ignore the DisableChargeTypeWhenCardOnFile when on external market because the override in marketSetting will decide if we can change the charge type.
            if (!isLocalMarket)
            {
                IsChargeTypesEnabled = Payments.Length > 1;
                return;
            }

            // If the setting DisableChargeTypeWhenCardOnFile is true, prevent changing the chargetype to something else then credit card.
            var isChargeTypeLocked = _accountService.CurrentAccount.DefaultCreditCard != null && Settings.DisableChargeTypeWhenCardOnFile;

            IsChargeTypesEnabled = !isChargeTypeLocked && Payments.Length > 1;
        }
コード例 #6
0
        private async Task VehicleTypesChanged(IList <VehicleType> vehicleTypes)
        {
            var isLocalMarket = await _networkRoamingService.GetAndObserveMarketSettings()
                                .Select(marketSettings => marketSettings.IsLocalMarket)
                                .Take(1);

            if (isLocalMarket && vehicleTypes.None())
            {
                // in local market but no vehicle types, create a fake
                // vehicle type with the default value of reference data
                await SetDefaultVehicleType();
            }
            else
            {
                VehicleTypes = vehicleTypes;
            }

            RaisePropertyChanged(() => ShowVehicleSelection);
        }
コード例 #7
0
        public OrderWorkflowService(ILocationService locationService,
                                    IAccountService accountService,
                                    IGeolocService geolocService,
                                    IAppSettings configurationManager,
                                    ILocalization localize,
                                    IBookingService bookingService,
                                    ICacheService cacheService,
                                    IAccountPaymentService accountPaymentService,
                                    INetworkRoamingService networkRoamingService,
                                    IPaymentService paymentService,
                                    ILogger logger,
                                    IPOIProvider poiProvider,
                                    IVehicleTypeService vehicleTypeService,
                                    IDeviceCollectorService deviceCollectorService)
        {
            _cacheService           = cacheService;
            _appSettings            = configurationManager;
            _geolocService          = geolocService;
            _accountService         = accountService;
            _vehicleTypeService     = vehicleTypeService;
            _locationService        = locationService;
            _deviceCollectorService = deviceCollectorService;

            _bookingSettingsSubject = new BehaviorSubject <BookingSettings>(accountService.CurrentAccount.Settings);

            _vehicleTypeSubject = new BehaviorSubject <int?>(
                _appSettings.Data.VehicleTypeSelectionEnabled
                ? accountService.CurrentAccount.Settings.VehicleTypeId
                : null);

            _localize              = localize;
            _bookingService        = bookingService;
            _accountPaymentService = accountPaymentService;
            _networkRoamingService = networkRoamingService;
            _paymentService        = paymentService;
            _logger      = logger;
            _poiProvider = poiProvider;

            _estimatedFareDisplaySubject = new BehaviorSubject <string>(_localize[_appSettings.Data.DestinationIsRequired ? "NoFareTextIfDestinationIsRequired" : "NoFareText"]);

            Observe(_networkRoamingService.GetAndObserveMarketSettings(), marketSettings => MarketChanged(marketSettings).FireAndForget());
            Observe(_vehicleTypeService.GetAndObserveVehiclesList(), vehiclesList => PreselectDefaultVehicleType(vehiclesList));
        }
コード例 #8
0
        public HomeViewModel(IOrderWorkflowService orderWorkflowService,
                             IMvxWebBrowserTask browserTask,
                             ILocationService locationService,
                             ITutorialService tutorialService,
                             IPushNotificationService pushNotificationService,
                             IVehicleService vehicleService,
                             IAccountService accountService,
                             IPhoneService phoneService,
                             ITermsAndConditionsService termsService,
                             IPaymentService paymentService,
                             IMvxLifetime mvxLifetime,
                             IPromotionService promotionService,
                             IMetricsService metricsService,
                             IBookingService bookingService,
                             INetworkRoamingService networkRoamingService)
        {
            _locationService         = locationService;
            _orderWorkflowService    = orderWorkflowService;
            _tutorialService         = tutorialService;
            _pushNotificationService = pushNotificationService;
            _vehicleService          = vehicleService;
            _termsService            = termsService;
            _mvxLifetime             = mvxLifetime;
            _metricsService          = metricsService;
            _bookingService          = bookingService;
            _accountService          = accountService;
            _paymentService          = paymentService;

            Panel = new PanelMenuViewModel(browserTask, orderWorkflowService, accountService, phoneService, paymentService, promotionService);

            Map              = AddChild <MapViewModel>();
            OrderOptions     = AddChild <OrderOptionsViewModel>();
            OrderReview      = AddChild <OrderReviewViewModel>();
            OrderEdit        = AddChild <OrderEditViewModel>();
            OrderAirport     = AddChild <OrderAirportViewModel>();
            BottomBar        = AddChild <BottomBarViewModel>();
            AddressPicker    = AddChild <AddressPickerViewModel>();
            BookingStatus    = AddChild <BookingStatusViewModel>();
            DropOffSelection = AddChild <DropOffSelectionMidTripViewModel>();

            Observe(_vehicleService.GetAndObserveAvailableVehiclesWhenVehicleTypeChanges(), ZoomOnNearbyVehiclesIfPossible);
            Observe(networkRoamingService.GetAndObserveMarketSettings(), MarketChanged);
        }
コード例 #9
0
        public AccountService(IAppSettings appSettings,
                              IFacebookService facebookService,
                              ITwitterService twitterService,
                              ILocalization localize,
                              IConnectivityService connectivityService,
                              INetworkRoamingService networkRoamingService,
                              IPaymentService paymentService)
        {
            _localize            = localize;
            _twitterService      = twitterService;
            _facebookService     = facebookService;
            _appSettings         = appSettings;
            _connectivityService = connectivityService;
            _paymentService      = paymentService;

            if (networkRoamingService != null)
            {
                Observe(networkRoamingService.GetAndObserveMarketSettings(), marketSettings => MarketChanged(marketSettings).FireAndForget());
            }
        }
コード例 #10
0
        public BottomBarViewModel(IOrderWorkflowService orderWorkflowService,
                                  IMvxPhoneCallTask phone,
                                  IAccountService accountService,
                                  IPaymentService paymentService,
                                  INetworkRoamingService networkRoamingService,
                                  IBookingService bookingService)
        {
            _bookingService        = bookingService;
            _phone                 = phone;
            _orderWorkflowService  = orderWorkflowService;
            _accountService        = accountService;
            _paymentService        = paymentService;
            _networkRoamingService = networkRoamingService;

            if (!Settings.HideDestination)
            {
                Observe(_orderWorkflowService.GetAndObserveIsDestinationModeOpened(),
                        isDestinationModeOpened => EstimateSelected = isDestinationModeOpened);
            }

            if (Settings.PromotionEnabled)
            {
                Observe(ObserveIsPromoCodeApplied(), isPromoCodeApplied => IsPromoCodeActive = isPromoCodeApplied);
            }

            RefreshAppBarViewState(HomeViewModelState.Initial);

            // We ensure that we correctly update IsFutureBookingDisabled.
            var observeValidationResultAndMarkertSettings = Observable.CombineLatest(
                _orderWorkflowService.GetAndObserveOrderValidationResult(),
                _networkRoamingService.GetAndObserveMarketSettings(),
                (orderValidationResult, marketSettings) => new
            {
                OrderValidationResult = orderValidationResult,
                MarketSettings        = marketSettings
            });

            Observe(observeValidationResultAndMarkertSettings, mergedResult => HandleOrderValidatedtAndMarketSettingsChanged(mergedResult.OrderValidationResult, mergedResult.MarketSettings));
            Observe(_orderWorkflowService.GetAndObserveCanExecuteBookingOperation(), canExecuteBookOperation => CanExecuteBookOperation = canExecuteBookOperation);
        }