public async Task <IActionResult> SignUpLanguages() { var userLanguages = HttpContext.Session.Get <SignUpProcess>("SignUpProcess").UserLanguages; var model = new LanguagesViewModel(); model.UserLanguagesJson = JsonConvert.SerializeObject(userLanguages); await model.BuildAsync(_db); return(View(model)); }
public async Task <IActionResult> SignUpLanguages(LanguagesViewModel model) { var signUpProcess = HttpContext.Session.Get <SignUpProcess>("SignUpProcess"); signUpProcess.UserLanguages = model.GetUserLanguages(); var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { return(RedirectToAction(nameof(Login))); } var user = new User { UserName = $"{info.LoginProvider}-{info.ProviderKey}", Email = signUpProcess.Profile.Email, Name = signUpProcess.Profile.Name, Country = signUpProcess.Profile.Country, Gender = signUpProcess.Profile.Gender, BirthYear = signUpProcess.Profile.GetBirthYear() }; var result = await _userManager.CreateAsync(user); if (result.Succeeded) { result = await _userManager.AddLoginAsync(user, info); if (result.Succeeded) { await _signInManager.SignInAsync(user, isPersistent : false); _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider); user.Languages = new List <UserLanguage>(); foreach (var language in signUpProcess.UserLanguages) { user.Languages.Add(new UserLanguage { LanguageId = language.Key, Level = language.Value }); } await _db.SaveChangesAsync(); return(Redirect("~/")); } } AddErrors(result); await model.BuildAsync(_db); return(View(model)); }