Exemple #1
0
        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);
        }