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