bool IGroupSync.RemoveAccount(string hrefOrEmailOrUsername) { if (string.IsNullOrEmpty(hrefOrEmailOrUsername)) { throw new ArgumentNullException(nameof(hrefOrEmailOrUsername)); } IGroupMembership foundMembership = null; foreach (var item in this.AsInterface.GetAccountMemberships().Synchronously()) { IAccount account = item.GetAccount(); if (account.Href.Equals(hrefOrEmailOrUsername, StringComparison.InvariantCultureIgnoreCase) || account.Email.Equals(hrefOrEmailOrUsername, StringComparison.InvariantCultureIgnoreCase) || account.Username.Equals(hrefOrEmailOrUsername, StringComparison.InvariantCultureIgnoreCase)) { foundMembership = item; } if (foundMembership != null) { break; } } if (foundMembership == null) { throw new InvalidOperationException("The specified account does not belong to this group."); } return(foundMembership.Delete()); }
bool IGroupSync.RemoveAccount(IAccount account) { if (account == null) { throw new ArgumentNullException(nameof(account)); } IGroupMembership foundMembership = null; foreach (var item in this.AsInterface.GetAccountMemberships().Synchronously()) { if ((item as IInternalGroupMembership).AccountHref.Equals(account.Href, StringComparison.InvariantCultureIgnoreCase)) { foundMembership = item; } if (foundMembership != null) { break; } } if (foundMembership == null) { throw new InvalidOperationException("The specified account does not belong to this group."); } return(foundMembership.Delete()); }
async Task <bool> IGroup.RemoveAccountAsync(IAccount account, CancellationToken cancellationToken) { if (account == null) { throw new ArgumentNullException(nameof(account)); } IGroupMembership foundMembership = null; await this.AsInterface.GetAccountMemberships().ForEachAsync( item => { if ((item as IInternalGroupMembership).AccountHref.Equals(account.Href, StringComparison.InvariantCultureIgnoreCase)) { foundMembership = item; } return(foundMembership != null); }, cancellationToken).ConfigureAwait(false); if (foundMembership == null) { throw new InvalidOperationException("The specified account does not belong to this group."); } return(await foundMembership.DeleteAsync(cancellationToken).ConfigureAwait(false)); }
async Task <bool> IGroup.RemoveAccountAsync(string hrefOrEmailOrUsername, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(hrefOrEmailOrUsername)) { throw new ArgumentNullException(nameof(hrefOrEmailOrUsername)); } IGroupMembership foundMembership = null; var iterator = this.AsInterface.GetAccountMemberships(); while (await iterator.MoveNextAsync(cancellationToken).ConfigureAwait(false)) { foreach (var item in iterator.CurrentPage) { IAccount account = await item.GetAccountAsync(cancellationToken).ConfigureAwait(false); if (account.Href.Equals(hrefOrEmailOrUsername, StringComparison.InvariantCultureIgnoreCase) || account.Email.Equals(hrefOrEmailOrUsername, StringComparison.InvariantCultureIgnoreCase) || account.Username.Equals(hrefOrEmailOrUsername, StringComparison.InvariantCultureIgnoreCase)) { foundMembership = item; } if (foundMembership != null) { break; } } if (foundMembership != null) { break; } } if (foundMembership == null) { throw new InvalidOperationException("The specified account does not belong to this group."); } return(await foundMembership.DeleteAsync(cancellationToken).ConfigureAwait(false)); }
/// <summary> /// Synchronously gets this membership's <see cref="Group.IGroup">Group</see> resource. /// </summary> /// <param name="groupMembership">The group membership object.</param> /// <returns>This membership's <see cref="Group.IGroup">Group</see> resource.</returns> public static IGroup GetGroup(this IGroupMembership groupMembership) => (groupMembership as IGroupMembershipSync).GetGroup();
/// <summary> /// Synchronously gets this membership's <see cref="IAccount">Account</see> resource. /// </summary> /// <param name="groupMembership">The group membership object.</param> /// <returns>This membership's <see cref="IAccount">Account</see> resource.</returns> public static IAccount GetAccount(this IGroupMembership groupMembership) => (groupMembership as IGroupMembershipSync).GetAccount();