private static void ScrapeUserData() { using (var dbContext = new SlackTrackerContext()) { string cursor = null; MembersListResponse memberResponse; do { _logger.Log(LogLevel.Info, "Cursor: " + cursor); memberResponse = _client.GetUsers(cursor); var memberResponses = memberResponse.members; if (memberResponses != null) { foreach (var member in memberResponses) { _logger.Info($"Looking for Member {member.real_name}."); if (dbContext.Users.Count(c => c.Id.Equals(member.id) && c.EmailAddress == null) != 0) { _logger.Info($"Member { member.real_name}, found missing e-mail address. Updating"); var user = dbContext.Users.Single(c => c.Id.Equals(member.id)); user.EmailAddress = member.profile.email; user.Timezone = member.tz; user.TimezoneLabel = member.tz_label; user.ImagePath = member.profile.image_original; dbContext.Update(user); dbContext.SaveChanges(); } else if (dbContext.Users.Count(c => c.Id.Equals(member.id)).Equals(0)) { _logger.Log(LogLevel.Info, $"Adding User {member.name}, {member.real_name}."); dbContext.Users.Add(new Users() { Id = member.id, Username = member.name, Name = member.real_name, EmailAddress = member.profile.email, Timezone = member.tz, TimezoneLabel = member.tz_label, ImagePath = member.profile.image_original }); dbContext.SaveChanges(); } else { _logger.Log(LogLevel.Info, $"User {member.name}, {member.real_name} found. No updates required"); } } } if (memberResponse.response_metadata != null && !string.IsNullOrWhiteSpace(memberResponse.response_metadata.next_cursor)) { cursor = memberResponse.response_metadata.next_cursor; } } while (memberResponse.response_metadata != null && !string.IsNullOrWhiteSpace(memberResponse.response_metadata.next_cursor) ); } }
private static void WelcomeUsers() { try { if (_client.IsActive(_welcomerId)) { _logger.Log(LogLevel.Info, "Welcoming users users."); using (var context = new SlackTrackerContext()) { var usersToWelcome = context.UserJoinedGeneralEvents.Where(joins => joins.HasBeenWelcomed.Equals(false)).Take(5); foreach (var user in usersToWelcome) { _logger.Log(LogLevel.Info, $"Welcoming {user.User}."); _client.PostMessage(user.User, _welcomeNewUserMessage); } context.Database.ExecuteSqlCommand( "UPDATE dbo.UserJoinedGeneralEvents SET HasBeenWelcomed = 1 FROM dbo.UserJoinedGeneralEvents"); context.Database.ExecuteSqlCommand( "UPDATE dbo.Users SET HasBeenWelcomed = e.HasBeenWelcomed FROM dbo.Users u INNER JOIN dbo.UserJoinedGeneralEvents e ON u.Id = e.[User]"); var existingUsersToWelcome = context.Users.Where(u => u.HasBeenWelcomed.Equals(false)).Take(5); foreach (var user in existingUsersToWelcome) { _logger.Log(LogLevel.Info, $"Welcoming Existing user {user.Id}."); _client.PostMessage(user.Id, _welcomeExistingUserMessage); user.HasBeenWelcomed = true; context.Update(user); } } } else { _logger.Log(LogLevel.Info, $"Waiting until welcoming user {_welcomerId} is active to welcome users."); } } catch (Exception e) { _logger.Error(e, "An error occurred while welcoming new users. Continuing execution."); } }