示例#1
0
        public ActionResult Edit(UserAccountView UserAccountView, Guid Roles)
        {
            UserAccessRepository rep = new UserAccessRepository();

            List <Role> roles = rep.GetAllRoles();

            UserAccountView.Roles            = new List <SelectListItem>();
            UserAccountView.UserAccount.Role = rep.GetRole(Roles);

            ModelState.Remove("Roles"); //We remove any model state error on Roles because we manually load it from the database as drop-down list only returns the selected role

            foreach (Role role in roles)
            {
                UserAccountView.Roles.Add(new SelectListItem {
                    Text = role.RoleName, Value = role.ID.ToString()
                });
            }

            if (ModelState.IsValid)
            {
                if (UserAccountView.UserAccount != null)
                {
                    ////////////////////
                    MembershipUser user = Membership.GetUser(UserAccountView.UserAccount.Username);

                    UserAccount existingAccount = rep.GetUserAccount(UserAccountView.UserAccount.Username);

                    foreach (AvailableFunction func in existingAccount.Role.AvailableFunctions)
                    {
                        System.Web.Security.Roles.RemoveUserFromRole(existingAccount.Username, func.FunctionName);
                    }

                    foreach (var func in UserAccountView.UserAccount.Role.AvailableFunctions)
                    {
                        System.Web.Security.Roles.AddUserToRole(UserAccountView.UserAccount.Username, func.FunctionName);
                    }


                    ////////////////////
                    bool status = rep.UpdateUserAccount(UserAccountView.UserAccount);

                    if (status)
                    {
                        ViewData["Message"] = "User updated successfully!";
                    }
                    else
                    {
                        ViewData["Message"] = "There was an error updating this user. Please contact your administrator!";
                    }

                    return(View("Edit", null));
                }
                else
                {
                    ViewData["Message"] = "User could not be found!";
                }
            }

            return(View(UserAccountView));
        }