public ActionResult Edit(UniversalViewModel model)
        {
            try {
                Guid roleId   = model.RoleId.ToGuid();
                var  thisRole = db.aspnet_Roles.Where(r => r.RoleId == roleId).FirstOrDefault();

                thisRole.RoleName = model.Role;

                db.SaveChanges();

                return(RedirectToAction("Index"));
            } catch (Exception e) {
                return(View());
            }
        }
Beispiel #2
0
        public ActionResult Edit(UniversalViewModel model)
        {
            model.IsSuccess = ModelState.IsValid;
            model.StatusMsg = ModelState.ErrorMessages();

            if (model.IsSuccess)
            {
                model.aspnet_User = Membership.GetUser(model.Guid);
                if (model.aspnet_User.IsNotNull())
                {
                    // TODO: Need to update username using entity framework
                    AM.Model.aspnet_Users user = db.aspnet_Users.FirstOrDefault(au => au.UserId == model.Guid);

                    // Entity framework changes
                    user.UserName                       = model.Email.ToLower();
                    user.LoweredUserName                = model.Email.ToLower();
                    user.aspnet_Membership.Email        = model.Email.ToLower();
                    user.aspnet_Membership.LoweredEmail = model.Email.ToLower();

                    Profile profile = db.Profiles.FirstOrDefault(u => u.UserId == model.Guid);



                    if (profile.IsNull())
                    {
                        profile = new Profile()
                        {
                            FirstName   = model.FirstName,
                            LastName    = model.LastName,
                            PhoneNumber = model.PhoneNumber,
                            UserId      = model.Guid,
                            Guid        = Guid.NewGuid()
                        };

                        db.Profiles.Add(profile);
                    }
                    else
                    {
                        profile.FirstName   = model.FirstName;
                        profile.LastName    = model.LastName;
                        profile.PhoneNumber = model.PhoneNumber;
                    }

                    db.SaveChanges();

                    if (Roles.GetRolesForUser(user.UserName).IsNullOrEmpty())
                    {
                        model.CurrentRole = "";
                    }
                    else
                    {
                        model.CurrentRole = Roles.GetRolesForUser(user.UserName)[0];
                    }

                    try {
                        List <String> assignedRoles = Roles.GetRolesForUser(user.UserName).ToList();
                        List <String> rolesToRemove = assignedRoles.Where(r => !model.SelectedRoles.Contains(r)).ToList();
                        List <String> rolesToAdd    = model.SelectedRoles.Where(r => !assignedRoles.Contains(r)).ToList();

                        if (rolesToAdd.IsNotNullOrEmpty())
                        {
                            Roles.AddUserToRoles(user.UserName, rolesToAdd.ToArray());
                        }

                        if (rolesToRemove.IsNotNullOrEmpty())
                        {
                            Roles.RemoveUserFromRoles(user.UserName, rolesToRemove.ToArray());
                        }

                        // Other way
                        //for (int i = 0; i < assignedRoles.Count(); i++) {
                        //    if (!model.SelectedRoles.Contains(assignedRoles[i])) {
                        //        Roles.RemoveUserFromRole(user.UserName, assignedRoles[i]);
                        //    }
                        //}
                    } catch (Exception ex) {
                        model.IsSuccess = false;
                        model.StatusMsg = "Error: " + ex.Message;
                    }


                    // TODO: Change role assignment from singular to plural. Add all new roles to list, and new model list to roles, then remove roles from the difference of whats currently there.
                    //if (model.SelectedRoles != model.CurrentRole) {
                    //    Roles.RemoveUserFromRole(user.UserName, model.CurrentRole);
                    //    Roles.AddUserToRole(user.UserName, model.SelectedRole);
                    //}

                    //return RedirectToAction("Index", new { IsSuccess = true, ViewMode = AM.Model.Enums.ViewModes.Edit });
                }
                else
                {
                    model.IsSuccess = false;
                    //model.StatusMsg = "User with email " + model.Email.ToLower() + ", no longer exists. Please return to the Users Listing.";
                    model.StatusMsg = string.Format("User with email {0}, no longer exists. Please return to the Users Listing.", model.Email.ToLower());
                }
            }

            model.UserRoles    = Roles.GetAllRoles().ToList();
            model.UserRoleList = new SelectList(model.UserRoles);

            model.ViewMode = Model.Enums.ViewModes.Edit;

            if (Request.IsAjaxRequest())
            {
                return(Json(new { IsSuccess = model.IsSuccess, StatusMsg = model.StatusMsg, RedirectUrl = Url.Action("Index", "Users", new { area = "", IsSuccess = model.IsSuccess, ViewMode = AM.Model.Enums.ViewModes.Edit }) }, JsonRequestBehavior.AllowGet));
            }

            return(View(model));
        }