示例#1
0
        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"));
        }
示例#2
0
        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));
        }