Example #1
0
        private async Task UploadFriends(RegionPart regionPart)
        {
            var currentUser = await _dbContext.Users.Include(u => u.Friends).FirstOrDefaultAsync(u => !u.IsFriendsUploaded);

            if (currentUser != null)
            {
                try
                {
                    var offset  = 0;
                    var getNext = true;
                    var cities  = TambovCities.ResourceManager.GetString("tambov").Split(',');
                    while (getNext)
                    {
                        var friends = await _vkService.GetUserFriends(currentUser.SourceId, offset);

                        if (friends.Count > 0)
                        {
                            var filteredFriends = friends.Where(u => u.City != null).Where(u => cities.Contains(u.City.Title) || u.City?.Region != null &&
                                                                                           u.City.Region == regionPart.VkRegion.Title).Select(u =>
                                                                                                                                              new User
                            {
                                FirstName         = u.FirstName,
                                LastName          = u.LastName,
                                RegionPart        = regionPart,
                                SourceId          = u.Id,
                                IsFriendsUploaded = false,
                                IsLiked           = false
                            }).ToArray();
                            if (filteredFriends.Length > 0)
                            {
                                await _dbContext.AddRangeAsync(filteredFriends);

                                foreach (var friend in filteredFriends)
                                {
                                    currentUser.Friends.Add(friend);
                                }
                                _dbContext.Users.Update(currentUser);
                                await _dbContext.SaveChangesAsync();
                            }
                        }
                        else
                        {
                            getNext = false;
                        }

                        offset += 100;
                    }

                    currentUser.IsFriendsUploaded = true;
                    _dbContext.Update(currentUser);
                    await _dbContext.SaveChangesAsync();
                }
                catch (Exception e)
                {
                    _logger.Error(e, $"Exception : {e} \n Inner : {e.InnerException}");
                }
            }
        }
Example #2
0
        private async Task LikeFromGlobalSearch(RegionPart regionPart)
        {
            var appOptions = _dbContext.AppOptions.FirstOrDefault();

            if (appOptions == null)
            {
                throw new DataException("app options are null");
            }
            var offset             = appOptions.Offset;
            var globalSearchResult = await _vkService.GetUsersFromGlobalSearch((int?)regionPart.SourceId, offset);

            foreach (var currentUser in globalSearchResult)
            {
                try
                {
                    var dbUser = await _dbContext.Users.SingleOrDefaultAsync(u => u.SourceId == currentUser.Id);

                    var userInfo = await _vkService.GetUser(currentUser.Id);

                    if (dbUser == null)
                    {
                        await _vkService.SetLike(GetItemId(userInfo.PhotoId), currentUser.Id);

                        var likedUser = new User
                        {
                            FirstName         = currentUser.FirstName,
                            LastName          = currentUser.LastName,
                            LikeDate          = DateTime.Now,
                            RegionPart        = regionPart,
                            IsLiked           = true,
                            IsFriendsUploaded = false,
                            SourceId          = currentUser.Id
                        };
                        await _dbContext.Users.AddAsync(likedUser);

                        await _dbContext.SaveChangesAsync();
                    }
                }
                catch (Exception e)
                {
                    _logger.Error(e, $"Exception : {e} \n Inner : {e.InnerException}");
                }
            }

            appOptions.Offset += (uint)globalSearchResult.Count();
            _dbContext.AppOptions.Update(appOptions);
            await _dbContext.SaveChangesAsync();
        }
Example #3
0
 public override int GetHashCode()
 {
     return(RegionPart.GetHashCode() ^ Latitude.GetHashCode());
 }