Exemplo n.º 1
0
        public async Task <IEnumerable <AdUserDto> > CheckUsersValidityAsync(ISet <string> adUserEmailSet)
        {
            Guard.ContainsValidEmails(adUserEmailSet);

            var adUsersToCheck = new HashSet <string>();
            var checkedUsers   = new List <AdUserDto>();

            foreach (var userEmail in adUserEmailSet)
            {
                // if invalid ones exists, put them in a separate list (in case that only invalid are asked)
                if (_cache.Exists(userEmail))
                {
                    var invalidUserFromCache = new AdUserDto(null, userEmail, false);
                    checkedUsers.Add(invalidUserFromCache);
                    continue;
                }
                adUsersToCheck.Add(userEmail);
            }

            if (adUsersToCheck.Any())
            {
                var usersFromGraph = await _remoteGraphService.CheckUsersValidityAsync(adUsersToCheck);

                WriteInvalidUsersToCache(usersFromGraph);
                checkedUsers.AddRange(usersFromGraph);
            }

            return(checkedUsers);
        }
Exemplo n.º 2
0
        public async Task <IList <AdUserDto> > CheckUsersValidityAsync(ISet <string> adUserEmailSet)
        {
            Guard.IsNotNullOrEmpty(adUserEmailSet);
            var adUserList = new List <AdUserDto>();

            foreach (var mail in adUserEmailSet)
            {
                var adUserDto = new AdUserDto(null, mail, false);
                try
                {
                    var userRequest = _graphClient.Users[mail]
                                      .Request()
                                      .Select(u => new { u.Id, u.Mail, u.AccountEnabled });

                    var adUser = await userRequest.GetAsync();

                    if (adUser != null)
                    {
                        adUserDto.Id             = adUser.Id;
                        adUserDto.AccountEnabled = (true == adUser.AccountEnabled);
                    }
                }
                catch (ServiceException e)
                {
                    if (!e.Message.Contains("Request_ResourceNotFound"))
                    {
                        throw e;
                    }
                }
                finally
                {
                    adUserList.Add(adUserDto);
                }
            }

            return(adUserList);
        }