private async void btnSaveChanges_Click(object sender, RoutedEventArgs e) { List <int?> addedUsers = getAddedUsers(); List <int?> removedUsers = getRemovedUsers(); List <int?> addedRoles = getAddedRoles(); List <int?> removedRoles = getRemovedRoles(); List <string> addedChannels = getAddedChannels(); List <int?> removedChannels = getRemovedChannels(); try { if (addedUsers.Count != 0) { await groupsApi.AddUsersToGroupAsync(group.Id, addedUsers); } if (removedUsers.Count != 0) { //await groupsApi.RemoveUsersFromGroupAsync(groupId, removedUsers); } if (addedRoles.Count != 0) { await groupsApi.AddRolesToGroupAsync(group.Id, addedRoles); } if (removedRoles.Count != 0) { //await groupsApi.RemoveRolesFromGroupAsync(groupId, removedRoles); } foreach (string channelName in addedChannels) { await channelsApi.CreateChannelAsync(group.Id, channelName); } foreach (int channelId in removedChannels) { await channelsApi.DeleteChannelAsync(channelId); } } catch (HttpOperationException er) { new ErrorDialog(er.Response.ReasonPhrase, er.Response.Content).ShowDialog(); return; } GroupUpdated?.Invoke(group); }
// Entity updated observable public IObservable <GroupUpdatedEventArgs <T> > OnEntityUpdatedAsObservable <T>() { var entityUpdated = Observable.FromEvent <GroupUpdated, GroupUpdatedEventArgs <T> >(handler => { GroupUpdated entityRemovedHandler = (group, entity, index, previous, current) => { if (previous is T) { var args = new GroupUpdatedEventArgs <T>(); args.group = group; args.entity = entity; args.index = index; args.previous = (T)previous; args.current = (T)current; handler(args); } }; return(entityRemovedHandler); }, entityUpdatedHandler => OnEntityUpdated += entityUpdatedHandler, entityUpdatedHandler => OnEntityUpdated -= entityUpdatedHandler); return(entityUpdated); }