public ActionResult ChangeManager(TeamsNewManager item) { ApplicationUser user = db.Users.Find(item.formerManagerId); ApplicationUser newManager = db.Users.Find(item.newManagerId); UserManager <ApplicationUser> UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db)); if (user == null || newManager == null || !UserManager.GetRoles(user.Id).Contains("Manager")) { return(RedirectToAction("Index")); } List <Team> teams = db.Teams.ToList().FindAll(x => x.UserId == user.Id); foreach (Team team in teams) { Team actualTeam = db.Teams.Find(team.TeamId); if (TryUpdateModel(actualTeam)) { actualTeam.UserId = item.newManagerId; db.SaveChanges(); } if (!db.UsersToTeams.ToList().Exists(x => x.UserId == item.newManagerId && x.TeamId == team.TeamId)) { UserToTeam newItem = new UserToTeam() { UserId = newManager.Id, TeamId = team.TeamId }; db.UsersToTeams.Add(newItem); db.SaveChanges(); } } try { if (!UserManager.GetRoles(newManager.Id).Contains("Manager")) { UserManager.AddToRole(newManager.Id, "Manager"); } UserManager.RemoveFromRole(user.Id, "Manager"); } catch (Exception ex) { Log.Error("Failed to process changing teams manager. Error: " + ex.Message); } return(RedirectToAction("Index")); }
public ActionResult ChangeManager(string userId) { ApplicationUser user = db.Users.Find(userId); if (user == null) { return(RedirectToAction("Index")); } UserManager <ApplicationUser> UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db)); if (!UserManager.GetRoles(user.Id).Contains("Manager")) { return(RedirectToAction("Index")); } List <Team> teams = db.Teams.ToList().FindAll(x => x.UserId == userId); IEnumerable <SelectListItem> allUsers = MembersToSelectList(db.Users.ToList().FindAll(x => x.Id != userId)); if (teams.Count == 0 || allUsers.Count() == 0) { try { UserManager.RemoveFromRole(userId, "Manager"); } catch (Exception ex) { Log.Error("Failed to remove manager from team. Error: " + ex.Message); } return(RedirectToAction("Index")); } TeamsNewManager item = new TeamsNewManager() { formerManagerId = userId, newManagerId = allUsers.First().Value }; ViewBag.AllUsers = allUsers; return(View(item)); }