Sha256: e54510dd5b404f87c22777b656f74126ce1984c41547ef7457198780a8996d06

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

require 'yaml'
require 'trello'
require 'logger'
require_relative 'database'
require_relative 'exceptions'

class Trello::Card

  def assignees
    @trello_connection = ::Reviewlette::TrelloConnection.new
    member_ids.map{|id| @trello_connection.find_member_by_id(id)}
  end
end

module Reviewlette

  class TrelloConnection

    attr_accessor :board

    def initialize
      setup_trello
    end

    def determine_reviewer(card)
      raise AlreadyAssignedException, "Everyone on the team is assigned to the Card." if reviewer_exception_handler(card)
      find_member_by_username(sample_reviewer(card))
    end

    def sample_reviewer(card)
      (team - card.assignees.map(&:username)).sample
    end

    def reviewer_exception_handler(card)
      (team - card.assignees.map(&:username)).count <= 0
    end

    def add_reviewer_to_card(reviewer, card)
      card.add_member(reviewer) if reviewer
    end

    def comment_on_card(reviewer, card)
      card.add_comment(reviewer) if reviewer
    end

    def move_card_to_list(card, column)
      card.move_to_list(column)
    end

    def team
      #where vacation is not false
      @team ||= Reviewlette::Database.new.get_users_trello_entries
    end

    def find_column(column_name)
      @board.lists.find {|x| x.name == column_name}
    end

    def find_member_by_username(username)
      @board.members.find{|m| m.username == username}
    end

    def find_member_by_id(id)
      @board.members.find{|m| m.id == id}
    end

    def find_card_by_id(id)
      @board.cards.find{|c| c.short_id == id.to_i}
    end

    def setup_trello
      Trello.configure do |config|
        config.developer_public_key = ::Reviewlette::TRELLO_CONFIG1['consumerkey']
        config.member_token = ::Reviewlette::TRELLO_CONFIG1['oauthtoken']
      end
      @board = Trello::Board.find(::Reviewlette::TRELLO_CONFIG1['board_id'])
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reviewlette-0.0.6 lib/reviewlette/trello_connection.rb