public RegisterViewModel(NavigationService navigationService, IRestApiService apiService) { _navigationService = navigationService ?? throw new NullReferenceException(); _apiService = apiService ?? throw new NullReferenceException(); var valid = this.WhenAnyValue( x => x.Email, x => x.Password, x => x.Name, x => x.DateOfBirth, x => x.Gender, (email, password, name, date, gender) => new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$").IsMatch(email) && new Regex(@"([a-zA-Z0-9]{6,})").IsMatch(password) && new Regex(@"([a-z]{1,})").IsMatch(password) && new Regex(@"([A-Z]{1,})").IsMatch(password) && new Regex(@"([0-9]{1,})").IsMatch(password) && new Regex(@"([a-zA-Z]{2,})").IsMatch(name) && gender is Gender ); RegisterCommand = ReactiveCommand.CreateFromTask(async() => { var gender = this.Gender == SharedLibrary.Models.Gender.Male ? SharedLibrary.Models.Gender.Male : SharedLibrary.Models.Gender.Female; var dto = new RegisterDto { Email = this.Email, Name = this.Name, Password = this.Password, Gender = gender, DateOfBirth = this.DateOfBirth.DateTime }; try { var res = await _apiService.Register(dto); if (res.Succeeded == true) { var container = App.Container.Resolve <ApplicationDataContainer>(); container.Values["AuthToken"] = "Bearer " + res.AuthToken; _navigationService.Navigate_App(typeof(MainPageView)); return; } await new MessageDialog($"Error: {res.Error}").ShowAsync(); } catch (Exception e) { await new MessageDialog($"Error: {e.Message}").ShowAsync(); } }, valid); }