public async Task <IActionResult> AddRole(RegisterViewModelRole registerView, int?id) { ViewBag.Role = _appDbContext.Roles.ToList(); if (id == null) { return(NotFound()); } var employee = _appDbContext.Employees.Include(x => x.AppUser).FirstOrDefault(m => m.Id == id); if (employee == null) { return(NotFound()); } if (!ModelState.IsValid) { return(View(registerView)); } if (employee.AppUser == null) { AppUser newUser = new AppUser { UserName = registerView.Username, Email = registerView.Email, PhoneNumber = registerView.PhoneNumber, EmployeeId = id.Value }; IdentityResult identity = await _userManager.CreateAsync(newUser, registerView.Password); if (!identity.Succeeded) { foreach (var error in identity.Errors) { ModelState.AddModelError("", error.Description); } return(View(registerView)); } await _userManager.AddToRoleAsync(newUser, registerView.Role); employee.AppUserId = newUser.Id; await _appDbContext.SaveChangesAsync(); await _signInManager.SignInAsync(newUser, true); return(RedirectToAction("Index", "Employees")); } else { return(View()); } }
public async Task <IActionResult> EditRole(int id, RegisterViewModelRole test) { ViewBag.Role = _appDbContext.Roles.ToList(); if (ModelState.IsValid) { try { var employee = await _appDbContext.Employees.Include(e => e.AppUser).FirstOrDefaultAsync(e => e.Id == id); AppUser appUser = employee.AppUser; appUser.Email = test.Email; appUser.UserName = test.Username; appUser.PhoneNumber = test.PhoneNumber; string role = (await _userManager.GetRolesAsync(appUser)).FirstOrDefault(); await _userManager.RemoveFromRoleAsync(appUser, role); await _userManager.AddToRoleAsync(appUser, test.Role); string token = await _userManager.GeneratePasswordResetTokenAsync(appUser); await _userManager.ResetPasswordAsync(appUser, token, test.Password); await _userManager.UpdateAsync(appUser); _appDbContext.Update(employee); await _appDbContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { return(RedirectToAction("Index", "Employees")); } } return(RedirectToAction("Index", "Employees")); }