public async System.Threading.Tasks.Task <IActionResult> Register(CustomerWithPassword customerWithPassword) { if (ModelState.IsValid) { Customer customer = customerWithPassword.Customer; if (_northwindContext.Customers.Any(c => c.CompanyName == customer.CompanyName)) { ModelState.AddModelError("", "Company Name must be unique"); } else { if (ModelState.IsValid) { AppUser user = new AppUser { // email and username are synced - this is by choice Email = customer.Email, UserName = customer.Email }; // Add user to Identity DB IdentityResult result = await _userManager.CreateAsync(user, customerWithPassword.Password); if (!result.Succeeded) { AddErrorsFromResult(result); } else { // Assign user to customers Role result = await _userManager.AddToRoleAsync(user, "customer"); if (!result.Succeeded) { // Delete User from Identity DB await _userManager.DeleteAsync(user); AddErrorsFromResult(result); } else { // Create customer (Northwind) _northwindContext.AddCustomer(customer); return(RedirectToAction("Index", "Home")); } } } } } return(View()); }