public async Task <RequestResponseModel <UserViewModel> > SignUpAsync(RegistrationWriteModel signUpData) { var errors = await _userValidator.CheckSignUpDataBeforeRegisteringAsync(signUpData); if (errors.Any()) { return(new RequestResponseModel <UserViewModel>(StatusCodes.Status400BadRequest, errors, null)); } var passwordHash = _passwordHasher.EncodePassword(signUpData.Password); var role = await _userValidator.GetUserRoleBeforeRegisterAsync(); var registeredUser = await _userRepository.SignUpAsync(new UserEntity { MailAddress = signUpData.MailAddress, Username = signUpData.Username, PasswordHash = passwordHash, Role = role }); if (registeredUser == null) { return(new RequestResponseModel <UserViewModel>(StatusCodes.Status400BadRequest, new List <ErrorViewModel> { ErrorViewModel.Factory.NewErrorFromMessage(_localizer["UserCreationErrorMessage"] .Value) }, null)); } await _userRepository.SaveChangesAsync(); var result = (UserViewModel)registeredUser; return(new RequestResponseModel <UserViewModel>(StatusCodes.Status200OK, Enumerable.Empty <ErrorViewModel>(), result)); }