public async Task <IActionResult> Register(RegisterViewModel reg) { if (ModelState.IsValid) { // Check username is not taken if (!await AccountDb.IsUsernameTaken(reg.Username, _context)) { Account acc = new Account() { Email = reg.Email, FullName = reg.FullName, Password = reg.Password, Username = reg.Username }; await AccountDb.Register(_context, acc); SessionHelper.CreateUserSession(acc.AccountId, acc.Username, _http); return(RedirectToAction("Index", "Home")); } else // If username is taken, add error { ModelState.AddModelError(nameof(Account.Username), "Username is already taken"); } } return(View(reg)); }
public IActionResult Register(Account a) { if (ModelState.IsValid) { bool isEmailAndUsernameAvailable = true; if (AccountDb.IsEmailTaken(a.Email)) { isEmailAndUsernameAvailable = false; ModelState.AddModelError(string.Empty, "Email address is taken"); } if (AccountDb.IsUsernameTaken(a.Username)) { isEmailAndUsernameAvailable = false; ModelState.AddModelError(string.Empty, "Username is taken"); } if (!isEmailAndUsernameAvailable) { return(View(a)); } AccountDb.Add(a); SessionHelper.LogUserIn(_httpAccessor, a.AccountId, a.Username); TempData["Message"] = "You registered sucessfully"; return(RedirectToAction("Index", "Home")); } return(View(a)); }