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 }); }