dhhxu/projectscope

View on GitHub
app/models/slack_metric.rb

Summary

Maintainability
A
55 mins
Test Coverage
class SlackMetric < ActiveRecord::Base
  belongs_to :project
  has_many :slack_data_points
  
  def get_data
    if self.slack_api_token == nil or self.slack_api_token == ''
      return
    end
    client = Slack::Web::Client.new(token: self.slack_api_token)
    users = client.users_list.members
    start_time = (Time.now - (7+Time.now.wday+1).days).to_s[0,10]
      end_time = (Time.now - (Time.now.wday).days).to_s[0,10]
    users.each do |user|
      unless user.name == "slackbot"
        num_messages = client.search_all(query: "from:@#{user.name} after:#{start_time} before:#{end_time}").messages.total
        slack_data_point = self.slack_data_points.find_by user: user.name
        if slack_data_point
          slack_data_point.update_attributes(:messages => num_messages)
        else
          self.slack_data_points.create(user: user.name, messages: num_messages)
        end
      end
    end
  end
  
end