Beispiel #1
0
        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());
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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();