Exemple #1
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);
                        }
                    }
                }
            }
        }
Exemple #2
0
 private async Task AddPotentialFriendsRecursive(Person user, EnterType type, List <Person> potentialFriends, DumpingDepth depth, Dictionary <int, Person> trace)
 {
     foreach (var pFriend in potentialFriends)
     {
         if (!_dbcache.CheckAddPersonId(pFriend.Id))
         {
             _neo4JWorker.AddPerson(pFriend);
         }
         _neo4JWorker.AddRelation(user, pFriend, type);
         await CollectPotentialFriendsRecursive(pFriend, depth, trace);
     }
 }