private async Task <ProcessResult <bool> > SaveUserViewModel(UserViewModel viewModel, FormMode mode) { ProcessResult <bool> processResult = new ProcessResult <bool>(); if (mode == FormMode.Edit) { ApplicationUser user = await _userManager.FindByNameAsync(viewModel.UserName); if (user != null) { UserViewModelMapper mapper = new UserViewModelMapper(); user = mapper.BuildRepositoryModel(viewModel, user); IdentityResult identityResult = await _userManager.UpdateAsync(user); processResult.SetResult(identityResult); if (identityResult.Succeeded && !string.IsNullOrEmpty(viewModel.Password)) { string token = await _userManager.GeneratePasswordResetTokenAsync(user); identityResult = await _userManager.ResetPasswordAsync(user, token, viewModel.Password); processResult.SetResult(identityResult); } } else { processResult.AddError("Unable to find this user"); } } else { IdentityResult identityResult = await _userManager.CreateApplicationUserAsync(viewModel.UserName, viewModel.Nickname, viewModel.Email, viewModel.Password, JudgeMyPhotoRoles.Photographer); processResult.SetResult(identityResult); } return(processResult); }