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); }
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); }