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}"); } } }
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(); }
public override int GetHashCode() { return(RegionPart.GetHashCode() ^ Latitude.GetHashCode()); }