Exemple #1
0
        public OtherInformationsPageViewModel(INavigationService navigationService, IOpenWebPageService webService, IConstUrls constUrls)
        {
            Items = new ObservableCollection <Tuple <string, string> >()
            {
                new Tuple <string, string>("利用規約", constUrls.TermsOfUseUrl),
                new Tuple <string, string>("オープンソースライセンス", constUrls.LicenseUrl),
            };

            SelectedItemCommand = new DelegateCommand <Tuple <string, string> >(async(item) =>
            {
                await webService.OpenUri(item.Item2);
            });

            CloseButtonClickCommand = new AsyncReactiveCommand();
            CloseButtonClickCommand.Subscribe(async() =>
            {
                await navigationService.GoBackAsync(null, true);
            }).AddTo(this.Disposable);
        }
        public VoteAnnouncePageViewModel(IEventAggregator eventAggregator, IOpenWebPageService webService, IConstUrls constUrls)
        {
            ReactiveCurrentTimeMs = new ReactiveProperty <DateTimeOffset>(GetCurrentDateTimeOffset()).AddTo(this.Disposable);
            ReactiveCurrentTimeT1 = new ReactiveProperty <DateTimeOffset>(GetCurrentDateTimeOffset()).AddTo(this.Disposable);

            MsContestOpenValidate = ReactiveCurrentTimeMs
                                    .SetValidateNotifyError((time) =>
            {
                var inSession = (time > StartMsContest) && (time < EndMsContest);
                return(inSession ? null : "開催期間外です");
            }).AddTo(this.Disposable);

            IsFestaOpeningValidate = ReactiveCurrentTimeT1
                                     .SetValidateNotifyError((time) =>
            {
                var inSession = (time > StartT1) && (time < EndT1);
                return(inSession ? null : "開催期間外です");
            }).AddTo(this.Disposable);

            MrMsErrorText = MsContestOpenValidate
                            .ObserveErrorChanged
                            .Select(x => x?.OfType <string>().FirstOrDefault() ?? "")
                            .ToReactiveProperty()
                            .AddTo(this.Disposable);

            T1ErrorText = IsFestaOpeningValidate
                          .ObserveErrorChanged
                          .Select(x => x?.OfType <string>().FirstOrDefault() ?? "")
                          .ToReactiveProperty()
                          .AddTo(this.Disposable);

            GoMrVoteCommand = MsContestOpenValidate
                              .ObserveHasErrors
                              .Select(x => !x)
                              .ToReactiveCommand()
                              .AddTo(this.Disposable);

            GoMsVoteCommand = MsContestOpenValidate
                              .ObserveHasErrors
                              .Select(x => !x)
                              .ToReactiveCommand()
                              .AddTo(this.Disposable);

            GoT1VoteCommand = IsFestaOpeningValidate
                              .ObserveHasErrors
                              .Select(x => !x)
                              .ToReactiveCommand()
                              .AddTo(this.Disposable);

            GoMrVoteCommand.Subscribe(async() =>
            {
                await webService.OpenUri(constUrls.MrContestVoteUrl);
            }).AddTo(this.Disposable);

            GoMsVoteCommand.Subscribe(async() =>
            {
                await webService.OpenUri(constUrls.MsContestVoteUrl);
            }).AddTo(this.Disposable);

            GoT1VoteCommand.Subscribe(async() =>
            {
                await webService.OpenUri(constUrls.T1VoteUrl);
            }).AddTo(this.Disposable);

            eventAggregator.GetEvent <TabbedPageOpendEvent>().Subscribe((open) =>
            {
                if (open.Name != nameof(VoteAnnouncePageViewModel).GetViewNameFromRule())
                {
                    return;
                }
                ReactiveCurrentTimeMs.Value = GetCurrentDateTimeOffset();
                ReactiveCurrentTimeT1.Value = GetCurrentDateTimeOffset();
            }).AddTo(this.Disposable);
        }
Exemple #3
0
        public EnquetePageViewModel(INavigationService navigationService,
                                    IOpenWebPageService webService,
                                    IAnalyticsService analyticsService,
                                    ILocalConfigService configService,
                                    IConstUrls constUrls)
        {
            _navigationService = navigationService;
            _webService        = webService;
            _analyticsService  = analyticsService;
            _configService     = configService;

            Ages       = AGE.Keys.ToList();
            Members    = MEMBER.Keys.ToList();
            Residences = RESIDENCE.Keys.ToList();
            Wheres     = WHERE.Keys.ToList();
            Accesses   = ACCESS.Keys.ToList();

            AgeValidation       = AgeSelected.SetValidateNotifyError((val) => string.IsNullOrEmpty(val) ? "年齢が選択されていません" : null).AddTo(this.Disposable);
            MemberValidation    = MemberSelected.SetValidateNotifyError((val) => string.IsNullOrEmpty(val) ? "所属が選択されていません" : null).AddTo(this.Disposable);
            ResidenceValidation = ResidenceSelected.SetValidateNotifyError((val) => string.IsNullOrEmpty(val) ? "居住地が選択されていません" : null).AddTo(this.Disposable);
            WhereValidation     = WhereSelected.SetValidateNotifyError((val) => string.IsNullOrEmpty(val) ? "どこで知ったのかが選択されていません" : null).AddTo(this.Disposable);
            AccessValidation    = AccessSelected.SetValidateNotifyError((val) => string.IsNullOrEmpty(val) ? "どのように来たのかが選択されていません" : null).AddTo(this.Disposable);

            AgeSelected.AddTo(this.Disposable);
            MemberSelected.AddTo(this.Disposable);
            ResidenceSelected.AddTo(this.Disposable);
            WhereSelected.AddTo(this.Disposable);
            AccessSelected.AddTo(this.Disposable);

            SubmitCommand = new[]
            {
                AgeValidation.ObserveHasErrors,
                MemberValidation.ObserveHasErrors,
                ResidenceValidation.ObserveHasErrors,
                WhereValidation.ObserveHasErrors,
                AccessValidation.ObserveHasErrors,
            }
            .CombineLatestValuesAreAllFalse()
            .ToReactiveCommand()
            .AddTo(this.Disposable);

            SubmitCommand.Subscribe(async() =>
            {
                await Submit();
                await SaveUserProfile();
                await _navigationService.NavigateAsync("/AppNavigationRootPage/NavigationPage/HomePage");
            }).AddTo(this.Disposable);

            SkipCommand = new DelegateCommand(async() =>
            {
                SetValueSecret();
                await Submit();
                await SaveUserProfile();
                await _navigationService.NavigateAsync("/AppNavigationRootPage/NavigationPage/HomePage");
            });

            TermsOfUseCommand = new DelegateCommand(async() =>
            {
                await _webService.OpenUri(constUrls.TermsOfUseUrl);
            });
        }