public ActionResult Edit(UserRoleViewModel model)
        {
            ViewBag.Users = UserManager.Users;

            if (String.IsNullOrEmpty(model.SelectedUserId))
            {
                TempData["message"] = MessageHelper.BuildMessage(EnumSevereLevel.Error, "No user is selected!");
                return View(model);
            }            

            IdentityResult result;

            if (ModelState.IsValid)
            {
                //delete existing roles
                var selectedUser = UserManager.Users.Where(x => x.Id == model.SelectedUserId).FirstOrDefault();
                string[] currentRoles = RoleManager.Roles.ToList().Where(x => selectedUser.Roles.Any(y => y.RoleId == x.Id)).Select(x => x.Name).ToArray();
                if (currentRoles.Length > 0)
                {
                    result = UserManager.RemoveFromRoles(model.SelectedUserId, currentRoles);

                    if (!result.Succeeded)
                    {
                        TempData["message"] = MessageHelper.BuildMessage(EnumSevereLevel.Error, result);
                        return View(model);
                    }
                }

                //add new roles
                List<SelectRoleEditorViewModel> selectedRoles = model.Roles.Where(x => x.Selected).ToList();
                foreach (var role in selectedRoles)
                {
                    result = UserManager.AddToRole(model.SelectedUserId, role.RoleName);
                    if (!result.Succeeded)
                    {
                        TempData["message"] = MessageHelper.BuildMessage(EnumSevereLevel.Error, result);
                        return View(model);
                    }
                }

                TempData["message"] = MessageHelper.BuildMessage(EnumSevereLevel.Success, string.Format("{0} has been saved!", selectedUser.UserName));
                if (String.IsNullOrEmpty(model.ControllerName))
                    return RedirectToAction("List"); //Return to current controller
                else
                    return RedirectToAction("List", model.ControllerName); //Return to User controller
            }
            else
            {
                //There is something wrong with the data values
                TempData["message"] = MessageHelper.BuildMessage(EnumSevereLevel.Error, "There is something wrong with the data values, please check!");
                return View(model);
            }
        }
        public string GetRoles(string id)
        {
            var selectedUser = UserManager.Users.Where(x => x.Id == id).FirstOrDefault();

            var model = new UserRoleViewModel
            {
                //SelectedRoleIds = selectedUser.Roles.Select(x => x.RoleId).ToArray(),
                Roles = GetViewModelRoles(),
                SelectedUserId = id
            };

            return new JavaScriptSerializer().Serialize(model);
        }
 public ViewResult Edit(string id, string controllername = "")
 {
     ViewBag.Users = UserManager.Users;
     var selectedUser = UserManager.Users.Where(x => x.Id == id).FirstOrDefault();
     var model = new UserRoleViewModel(selectedUser, controllername, RoleManager.Roles);
     return View(model);
 }
 public ViewResult Roles(string id)
 {
     ViewBag.Users = UserManager.Users;
     var selectedUser = UserManager.Users.Where(x => x.Id == id).FirstOrDefault();
     var model = new UserRoleViewModel(selectedUser, "", RoleManager.Roles);
     return View(model);
 }