public async Task Edit(string name = null, ServerPermissions?permissions = null, Color color = null, bool?isHoisted = null, int?position = null, bool?isMentionable = null) { var updateRequest = new UpdateRoleRequest(Server.Id, Id) { Name = name ?? Name, Permissions = (permissions ?? Permissions).RawValue, Color = (color ?? Color).RawValue, IsHoisted = isHoisted ?? IsHoisted, IsMentionable = isMentionable ?? IsMentionable }; var updateResponse = await Client.ClientAPI.Send(updateRequest).ConfigureAwait(false); if (position != null) { int oldPos = Position; int newPos = position.Value; int minPos; Role[] roles = Server.Roles.OrderBy(x => x.Position).ToArray(); if (oldPos < newPos) //Moving Down { minPos = oldPos; for (int i = oldPos; i < newPos; i++) { roles[i] = roles[i + 1]; } roles[newPos] = this; } else //(oldPos > newPos) Moving Up { minPos = newPos; for (int i = oldPos; i > newPos; i--) { roles[i] = roles[i - 1]; } roles[newPos] = this; } var reorderRequest = new ReorderRolesRequest(Server.Id) { RoleIds = roles.Skip(minPos).Select(x => x.Id).ToArray(), StartPos = minPos }; await Client.ClientAPI.Send(reorderRequest).ConfigureAwait(false); } }
public Task ReorderRoles(string serverId, IEnumerable <string> roleIds, int startPos = 0) { if (serverId == null) { throw new ArgumentNullException(nameof(serverId)); } if (roleIds == null) { throw new ArgumentNullException(nameof(roleIds)); } if (startPos < 0) { throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer."); } uint pos = (uint)startPos; var roles = roleIds.Select(x => new ReorderRolesRequest.Role { Id = x, Position = pos++ }); var request = new ReorderRolesRequest(roles); return(_rest.Patch(Endpoints.ServerRoles(serverId), request)); }
public Task ReorderRoles(string serverId, IEnumerable<string> roleIds, int startPos = 0) { if (serverId == null) throw new ArgumentNullException(nameof(serverId)); if (roleIds == null) throw new ArgumentNullException(nameof(roleIds)); if (startPos < 0) throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer."); uint pos = (uint)startPos; var roles = roleIds.Select(x => new ReorderRolesRequest.Role { Id = x, Position = pos++ }); var request = new ReorderRolesRequest(roles); return _rest.Patch(Endpoints.ServerRoles(serverId), request); }
public async Task Edit(string name = null, ServerPermissions permissions = null, Color color = null, bool? isHoisted = null, int? position = null) { var updateRequest = new UpdateRoleRequest(Server.Id, Id) { Name = name ?? Name, Permissions = (permissions ?? Permissions).RawValue, Color = (color ?? Color).RawValue, IsHoisted = isHoisted ?? IsHoisted }; var updateResponse = await Client.ClientAPI.Send(updateRequest).ConfigureAwait(false); if (position != null) { int oldPos = Position; int newPos = position.Value; int minPos; Role[] roles = Server.Roles.OrderBy(x => x.Position).ToArray(); if (oldPos < newPos) //Moving Down { minPos = oldPos; for (int i = oldPos; i < newPos; i++) roles[i] = roles[i + 1]; roles[newPos] = this; } else //(oldPos > newPos) Moving Up { minPos = newPos; for (int i = oldPos; i > newPos; i--) roles[i] = roles[i - 1]; roles[newPos] = this; } var reorderRequest = new ReorderRolesRequest(Server.Id) { RoleIds = roles.Skip(minPos).Select(x => x.Id).ToArray(), StartPos = minPos }; await Client.ClientAPI.Send(reorderRequest).ConfigureAwait(false); } }