/// <summary>
        /// Asynchronicznie przechodzi do następnego ekranu
        /// </summary>
        /// <param name="x">Parametr komendy</param>
        /// <returns></returns>
        public async Task NextScreenAsync(object x)
        {
            Error = null;
            switch (CurrentScreen)
            {
            case CurrentScreen.Credentials:
                PasswordBox[] passwords = x as PasswordBox[];
                if (passwords == null || passwords.Length != 2)
                {
                    throw new ArgumentException();
                }
                string err;
                if (string.IsNullOrEmpty(Username))
                {
                    Error = "Podaj nazwę użytkownika";
                    return;
                }
                bool b = await _validator.ValidateUsernameAsync <AccommodationContext>(Username);

                if (!b)
                {
                    Error = "Nazwa użytkownika jest już zajęta";
                    return;
                }
                if (!_validator.ValidateEmail(Email, out err) ||
                    !_validator.ValidatePassword(passwords[0].Password, out err) ||
                    !_validator.ValidatePasswordConfirmation(passwords[0].Password, passwords[1].Password, out err))
                {
                    Error = err;
                    return;
                }
                _user = await _service.GetNewUserAsync(Username, passwords[0].Password);

                _userData = new UserData()
                {
                    Email = Email
                };
                CurrentScreen = CurrentScreen.BasicData;
                break;

            case CurrentScreen.BasicData:
                if (!_validator.ValidateName(FirstName))
                {
                    Error = "Należy podać imię";
                    return;
                }
                if (!_validator.ValidateName(LastName))
                {
                    Error = "Należy podać nazwisko";
                    return;
                }
                _userData.FirstName   = FirstName;
                _userData.LastName    = LastName;
                _userData.CompanyName = CompanyName ?? string.Empty;
                CurrentScreen         = CurrentScreen.Address;
                break;
            }
        }
Ejemplo n.º 2
0
        private async Task SavePasswordAsync(object parameter)
        {
            PasswordBox[] passwords = parameter as PasswordBox[];
            if (passwords == null || passwords.Length != 3)
            {
                throw new ArgumentException();
            }
            string oldClearTextPassword = passwords[0].Password;
            string newPassword          = passwords[1].Password;
            string newPasswordConfirmed = passwords[2].Password;
            string message;

            if (!_validator.ValidatePassword(newPassword, out message) && !_validator.ValidatePasswordConfirmation(newPassword, newPasswordConfirmed, out message))
            {
                Error = message;
                return;
            }
            CustomIdentity identity = await _loginService.GetUserAsync(_username, oldClearTextPassword);

            if (identity == null)
            {
                Error = "Nieprawidłowe hasło dla użytkownika " + _username;
                return;
            }
            UserNewPasswordDto dto = new UserNewPasswordDto()
            {
                Username    = _username,
                Password    = oldClearTextPassword,
                NewPassword = newPassword
            };

            try
            {
                await _profileProxy.ChangeUserPasswordAsync(dto);

                MessageBox.Show("Nowe hasło zostało pomyślnie zapisane.", "Hasło zmienione");
            }
            catch (Exception)
            {
                MessageBox.Show("Wystąpił błąd podczas zmiany hasła. Hasło nie zostało zmienione", "Błąd");
            }
            Close();
        }