private async Task DumpFriendsRecursive(Person user, DumpingDepth depth, Dictionary <int, Person> trace) { Logger.Out("Dumping friends for user: {0}", MessageType.Verbose, user.Url); try { var friends = await _vkWorker.GetFriends(user); await AddPotentialFriendsRecursive(user, EnterType.Friend, friends, depth, trace); } catch (Exception ex) { Logger.Out("USER: {0} \r\n Message: {1}", MessageType.Error, user.Url, ex.Message); } }
public async Task CompleteRelations(bool full) { HashSet <int> userIds = new HashSet <int>(_dbWorker.GetAllUsersIds()); //select people who have no out relations //var people = _analyzer.GetPeopleWithoutOutRelationsAndNotDeleted(); //get all people var people = _analyzer.GetPeopleWithoutOutRelations(); int count = 0; foreach (var person in people) { count++; Logger.Out("Completing: {0}. {1}/{2} done!", MessageType.Verbose, person.Id, count, people.Count()); var friends = new List <Person>(); try { friends = await _snWorker.GetFriends(person); } catch (Exception ex) { Logger.Out("Error getting friends for user {0}. Message: {1}", MessageType.Error, person.Id, ex.Message); } if (full) { AddAllRelations(friends, userIds, person); } else { Person mainUser = friends.FirstOrDefault(a => a.Id == _userId); if (mainUser != null) { try { _dbWorker.AddRelation(person, mainUser, EnterType.Friend); } catch (Exception ex) { Logger.Out("Error adding relation: {0} --> {1}. Message: {2}", MessageType.Error, person.Id, mainUser.Id, ex.Message); } } } } }