public async Task <IActionResult> Create([Bind(nameof(RegisterVolunteerModel.Email))] RegisterVolunteerModel registerVolunteerModel) { if (ModelState.IsValid) { ApplicationUser identityUser = await userManager.FindByEmailAsync(registerVolunteerModel.Email); if (identityUser == null || (await applicationDbContext.Volunteers.FindAsync(Guid.Parse(identityUser.Id))) == null) { Identity identity = ControllerContext.GetIdentity(); if (identityUser == null) { identityUser = new ApplicationUser { UserName = registerVolunteerModel.Email, Email = registerVolunteerModel.Email, EmailConfirmed = true }; await userManager.CreateAsync(identityUser, "Test.123"); await userManager.AddToRoleAsync(identityUser, Framework.Identity.CustomIdentityRole.Volunteer); } else { await userManager.RemoveFromRoleAsync(identityUser, Framework.Identity.CustomIdentityRole.Guest); await userManager.AddToRoleAsync(identityUser, Framework.Identity.CustomIdentityRole.Volunteer); } Volunteer volunteer = new Volunteer(); volunteer.ID = Guid.Parse(identityUser.Id); volunteer.NGOID = identity.NGOID; applicationDbContext.Volunteers.Add(volunteer); await applicationDbContext.SaveChangesAsync(); return(RedirectToAction(nameof(Volunteers))); } ModelState.AddModelError(nameof(RegisterVolunteerModel.Email), "Email duplicat"); } return(View(registerVolunteerModel)); }