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); }
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); }); }