Exemple #1
0
        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.");
            }
        }