private async Task ReplaceSchedulingGroupAsync(IMicrosoftGraphClient client, string teamId, string teamsSchedulingGroupId, IList <string> userIds)
        {
            // to ensure that we minimise concurrency issues, we should ensure we have populated
            // the members cache first
            var teamMembers = await GetMemberIdsAsync(client, teamId);

            var group = await client.GetSchedulingGroupAsync(teamId, teamsSchedulingGroupId);

            var usersToAdd = userIds.Except(group.UserIds).ToList();

            if (usersToAdd.Count > 0)
            {
                // ensure that all users are actually in the Team and remove any that aren't
                RemoveInvalidUsers(usersToAdd, teamMembers);
                if (usersToAdd.Count == 0)
                {
                    return;
                }

                if (group.UserIds == null)
                {
                    group.UserIds = userIds;
                }
                else
                {
                    ((List <string>)group.UserIds).AddRange(usersToAdd);
                }

                await client.ReplaceSchedulingGroupAsync(group, group.Etag, teamId, teamsSchedulingGroupId);
            }
        }
Beispiel #2
0
        private async Task ReplaceSchedulingGroupAsync(IMicrosoftGraphClient client, string teamId, string teamsSchedulingGroupId, IList <string> userIds)
        {
            var teamMembers = await _cacheService.GetKeyAsync <List <string> >(ApplicationConstants.TableNameEmployeeLists, teamId).ConfigureAwait(false);

            var group = await client.GetSchedulingGroupAsync(teamId, teamsSchedulingGroupId).ConfigureAwait(false);

            var usersToAdd = userIds.Except(group.UserIds).ToList();

            if (usersToAdd.Count > 0)
            {
                // ensure that all users are actually in the Team and remove any that aren't
                RemoveInvalidUsers(usersToAdd, teamMembers);
                if (usersToAdd.Count == 0)
                {
                    return;
                }

                if (group.UserIds == null)
                {
                    group.UserIds = userIds;
                }
                else
                {
                    ((List <string>)group.UserIds).AddRange(usersToAdd);
                }

                await client.ReplaceSchedulingGroupAsync(group, group.Etag, teamId, teamsSchedulingGroupId).ConfigureAwait(false);
            }
        }
        private async Task RemoveUsersFromSchedulingGroupAsync(IMicrosoftGraphClient client, string teamId, string schedulingGroupId)
        {
            var group = await client.GetSchedulingGroupAsync(teamId, schedulingGroupId);

            group.UserIds?.Clear();
            var response = await client.ReplaceSchedulingGroupAsync(group, group.Etag, teamId, group.Id);

            response.ThrowIfError();
        }