class Dude::ProjectManagement::Trello::FetchCurrentTasks

Attributes

client[R]
fetch_lists[R]

Public Class Methods

new(client, fetch_lists: nil) click to toggle source
# File lib/dude/project_management/trello/fetch_current_tasks.rb, line 11
def initialize(client, fetch_lists: nil)
  @client = client

  @fetch_lists = fetch_lists || FetchLists.new(client)
end

Public Instance Methods

call() click to toggle source
# File lib/dude/project_management/trello/fetch_current_tasks.rb, line 17
def call
  lists = fetch_lists.call
  lists.map { |list| retrieve_list_issues(list) }.flatten
end

Private Instance Methods

create_issue(issue, current_list) click to toggle source
# File lib/dude/project_management/trello/fetch_current_tasks.rb, line 32
def create_issue(issue, current_list)
  Entities::Issue.new(
    id: issue['idShort'],
    title: issue['name'],
    description: issue['desc'],
    status: current_list['name'],
    assignee: members(issue)
  )
end
members(issue) click to toggle source
# File lib/dude/project_management/trello/fetch_current_tasks.rb, line 42
def members(issue)
  people = issue['idMembers'].map do |person|
    JSON.parse(client.get("/1/members/#{person}", fields: 'fullName').body)['fullName']
  end
  people.empty? ? nil : people.join(', ')
end
retrieve_list_issues(list) click to toggle source
# File lib/dude/project_management/trello/fetch_current_tasks.rb, line 26
def retrieve_list_issues(list)
  response = client.get("/1/lists/#{list['id']}/cards")
  body = JSON.parse(response.body)
  body.map { |issue| create_issue(issue, list) }
end