public async Task <IActionResult> RegisterPatient(RegisterPatientViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = new ApplicationUser { UserName = model.Name, IsActive = true }; var createUserResult = await _userManager.CreateAsync(user, model.Password); if (createUserResult.Succeeded) { await _userManager.AddToRoleAsync(user, "Patient"); await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.GivenName, model.Name)); var signInResult = await _signInManager.PasswordSignInAsync(user, model.Password, false, false); if (signInResult.Succeeded) { var patient = new Patient { Name = model.Name, FirstName = model.FirstName, LastName = model.LastName, BirthDate = model.BirthDate, Phone = model.Phone, ApplicationUser = user }; await _appService.AddPatient(patient, CancellationToken.None); return(View("RegisterSuccessful")); } } foreach (var identityError in createUserResult.Errors) { if (identityError.Code == "DuplicateUserName") { ModelState.AddModelError("", "Ta nazwa użytkownika jest już zajęta."); } else { ModelState.AddModelError("", identityError.Description); } } return(View(model)); }