예제 #1
0
 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);
     }
 }
예제 #2
0
        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);
                        }
                    }
                }
            }
        }