public ActionResult EditPermissions(int roleId)
        {
            var permissions    = permissionProviders.Value.SelectMany(x => x.GetPermissions()).ToList();
            var allPermissions = permissionService.GetRecords();

            foreach (var permission in permissions)
            {
                if (allPermissions.All(x => x.Name != permission.Name))
                {
                    var newPermission = new Domain.Permission
                    {
                        Name        = permission.Name,
                        Category    = string.IsNullOrEmpty(permission.Category) ? "Miscellaneous" : permission.Category,
                        Description = permission.Description
                    };
                    permissionService.Insert(newPermission);
                    allPermissions.Add(newPermission);
                }
            }

            var role            = roleService.GetById(roleId);
            var rolePermissions = membershipService.GetPermissionsForRole(role.Id);

            var model = new UpdatePermissionsModel
            {
                RoleId      = roleId,
                Permissions = rolePermissions.Select(x => x.Id).ToArray()
            };

            var retult = new ControlFormResult <UpdatePermissionsModel>(model)
            {
                Title                = T("Edit Role Permissions"),
                ShowBoxHeader        = false,
                FormWrapperStartHtml = Constants.Form.FormWrapperStartHtml,
                FormWrapperEndHtml   = Constants.Form.FormWrapperEndHtml
            };

            var selectListItems = new List <ExtendedSelectListItem>();

            foreach (var categoryGroup in allPermissions.OrderBy(x => x.Category, new PermissionComparer(StringComparer.InvariantCultureIgnoreCase)).GroupBy(x => x.Category))
            {
                selectListItems.AddRange(categoryGroup.OrderBy(x => x.Description)
                                         .Select(permission => new ExtendedSelectListItem
                {
                    Category = permission.Category,
                    Text     = permission.Description,
                    Value    = permission.Id.ToString()
                }));
            }

            retult.RegisterExternalDataSource(x => x.Permissions, selectListItems);
            return(retult);
        }
        public ActionResult EditPermissions(UpdatePermissionsModel model)
        {
            membershipService.AssignPermissionsToRole(model.RoleId, model.Permissions);

            return(new AjaxResult().Alert(T("Cập nhật phân quyền thành công!")));
        }