public string GetValidAccountId(string accountId) { if (accountId == null) { throw new ArgumentNullException(nameof(accountId)); } return(VkApiConnector.GetValidAccountId(accountId).Result); }
public void FetchOnline(IEnumerable <long> personIds) { if (personIds == null) { throw new ArgumentNullException(nameof(personIds)); } if (personIds.Count() > MaxStackSize) { throw new ArgumentException($"Maximum count is \"{MaxStackSize}\".", nameof(personIds)); } var webResourceId = WebResourceRepository.Single(r => r.Uuid == WebResourceUuids.Vk, r => r.Id); var providerId = PersonMetaProviderRepository.Single(p => p.Uuid == PersonMetaProviderUuid, p => p.Id); var personAccountDict = MetaAccountRepository.Select(a => a.WebResourceId == webResourceId && personIds.Contains(a.PersonId)) .GroupBy(a => a.PersonId) .ToDictionary(g => g.Key, g => g.Select(a => a.AccountId)); var allAccountIds = personAccountDict.SelectMany(pa => pa.Value).ToArray(); var accountOnlineSnapshotDict = VkApiConnector.FetchOnlineSnapshots(allAccountIds).Result; foreach (var accountSnapshot in accountOnlineSnapshotDict) { var personId = personAccountDict.First(p => p.Value.Any(a => a == accountSnapshot.Key)).Key; var onlineSnapshots = accountOnlineSnapshotDict[accountSnapshot.Key]; foreach (var onlineSnapshot in onlineSnapshots) { var todayOnlineDataSnapshot = MetaDataSnapshotRepository.GetOrFetchDataSnapshot(providerId, personId, accountSnapshot.Key, onlineSnapshot.Time, (int)VkSnapshotType.Online); var snapshots = todayOnlineDataSnapshot.GetSnapshots <VkOnlineSnapshot>().Append(onlineSnapshot).ToArray(); todayOnlineDataSnapshot.SetSnapshots(snapshots); MetaDataSnapshotRepository.Save(todayOnlineDataSnapshot); } } UnitOfWork.Commit(); }