public async Task <IActionResult> RegisterDoctor(RegisterDoctorViewModel 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, "Doctor"); await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.GivenName, model.Name)); var signInResult = await _signInManager.PasswordSignInAsync(user, model.Password, false, false); if (signInResult.Succeeded) { await _appService.AddSpecialization( new Specialization { Name = model.Specialization }, CancellationToken.None); var docsSpec = await _appService.GetSpecializationByName(model.Specialization, CancellationToken.None); var doctor = new Doctor { Name = model.Name, FirstName = model.FirstName, LastName = model.LastName, Phone = model.Phone, Specialization = docsSpec, ApplicationUser = user }; await _appService.AddDoctor(doctor, 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)); }