public object SetGroupPermissions(SetPermissionsRequest request)
        {
            // Variables.
            var userService         = Services.UserService;
            var contentService      = ApplicationContext.Services.ContentService;
            var userPermissions     = request.UserTypePermissions;
            var nodeId              = request.NodeId;
            var node                = contentService.GetById(nodeId);
            var permissionsByTypeId = new Dictionary <int, string[]>();


            // Add all user types to dictionary.
            foreach (var u in userService.GetAllUserTypes())
            {
                permissionsByTypeId[u.Id] = new string[] { };
            }


            // Put permissions in dictionary.
            foreach (var utp in userPermissions)
            {
                permissionsByTypeId[utp.UserTypeId] = utp.Permissions;
            }


            // Process each user type permission.
            foreach (var pair in permissionsByTypeId)
            {
                // Variables.
                var cruds    = pair.Value.Any() ? string.Join(string.Empty, pair.Value) : "-";
                var userType = userService.GetUserTypeById(pair.Key);


                // Update user type permissions.
                _userTypePermissionsService.UpdateCruds(userType, node, cruds);


                // Update user permissions?
                if (request.ReplacePermissionsOnUsers)
                {
                    _userTypePermissionsService.CopyPermissions(userType, node);
                }
            }


            // Indicate success.
            return(new
            {
                Success = true
            });
        }