public RegistrationTypeSelectionPageViewModel(
            INavigationService navigationService,
            IAnalyticService analyticService,
            IFirebaseAuthService authService,
            IUserDialogs dialogs) : base(navigationService)
        {
            Title = "Registration Type";
            analyticService.TrackScreen("registration-type");

            Tradesman = ReactiveCommand.CreateFromTask(async() =>
            {
                await dialogs.AlertAsync("Coming Soon!").ConfigureAwait(false);
                analyticService.TrackTapEvent("register-as-tradesman");

                //await navigationService.NavigateAsync(nameof(TradesmentRegistrationPage)).ConfigureAwait(false);
            });

            Contractor = ReactiveCommand.CreateFromTask(async() =>
            {
                analyticService.TrackTapEvent("register-as-contractor");
                await navigationService.NavigateAsync(
                    nameof(ContractorRegistrationPage),
                    new NavigationParameters {
                    { "user_id", _userId }
                }).ConfigureAwait(false);
            });

            GoBack = ReactiveCommand.CreateFromTask <Unit, Unit>(async _ =>
            {
                var result = await dialogs.ConfirmAsync(
                    new ConfirmConfig
                {
                    Title      = "Cancel Account Creation?",
                    Message    = "Are you sure you want to cancel account creation?  This will discard any information you have entered so far",
                    OkText     = "Yes",
                    CancelText = "No"
                });
                if (result)
                {
                    analyticService.TrackTapEvent("cancel-account-creation");

                    // make sure we log out so the user has to log in again
                    await authService.Logout();

                    await NavigationService.NavigateToLoginPageAsync().ConfigureAwait(false);
                }

                return(Unit.Default);
            });

            NavigatingTo
            .Where(args => args.ContainsKey("user_id"))
            .Select(args => args["user_id"].ToString())
            .BindTo(this, x => x._userId);
        }
コード例 #2
0
 public CoffeeDetailViewModel(ICoffeeService coffeeService)
 {
     NavigatingTo
     .Where(x => x.ContainsKey("Id"))
     .Select(x => x["Id"])
     .Cast <Guid>()
     .SelectMany(coffeeService.Read)
     .Where(x => x != null)
     .ToProperty(this, x => x.Detail, out _detail)
     .DisposeWith(Garbage);
 }
コード例 #3
0
        public ContractorRegistrationPageViewModel(
            INavigationService navigationService,
            IAnalyticService analyticService) : base(navigationService)
        {
            Title = "Contractor";
            analyticService.TrackScreen(
                "registration-page",
                new Dictionary <string, string>
            {
                { "registration-type", "contractor" }
            });

            // store the fields in an enumerable for easy use later on in this class
            _validatableFields = new IValidity[]
            {
                CompanyName,
                CompanyEmail,
                CompanyUrl,
                AddressLineOne,
                AddressLineTwo,
                City,
                State,
                Zip,
                PrimaryPhone,
                SecondaryPhone,
                SocialNetwork1,
                SocialNetwork2,
                SocialNetwork3,
                PrimaryContact
            };

            AddValidationRules();

            NavigatingTo
            .Where(args => args.ContainsKey("user_id"))
            .Select(args => args["user_id"].ToString())
            .BindTo(this, x => x._userId);

            Next = ReactiveCommand.CreateFromTask(async() =>
            {
                if (!IsValid())
                {
                    return;
                }

                var contractor = new ContractorAccount
                {
                    AccountId    = _userId,
                    EmailAddress = CompanyEmail.Value,
                    CompanyName  = CompanyName.Value,
                    CompanyUrl   = CompanyUrl.Value,

                    //PrimaryContact = PrimaryContact.Value,
                    PhoneNumber = PrimaryPhone.Value,

                    //SecondaryPhoneNumber = SecondaryPhone.Value,
                    //PhysicalAddress = new Models.Address
                    //{
                    //    Address1 = AddressLineOne.Value,
                    //    Address2 = AddressLineTwo.Value,
                    //    City = City.Value,
                    //    State = State.Value,
                    //    PostalCode = Zip.Value
                    //},
                    //SocialNetwork1 = SocialNetwork1.Value,
                    //SocialNetwork2 = SocialNetwork2.Value,
                    //SocialNetwork3 = SocialNetwork3.Value
                };

                // TODO: ...
                await navigationService.NavigateAsync(
                    nameof(TradeSpecialtiesPage),
                    new NavigationParameters {
                    { "account", contractor }
                }).ConfigureAwait(false);
            });
        }