Class: Checkoff::MyTasks

Inherits:
Object
  • Object
show all
Defined in:
lib/checkoff/my_tasks.rb

Overview

Query different sections of Asana ‘My Tasks’ projects

Constant Summary collapse

MINUTE =
60
LONG_CACHE_TIME =
MINUTE * 15
SHORT_CACHE_TIME =
MINUTE * 5

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, projects: Checkoff::Projects.new(config: config, client: client)) ⇒ MyTasks

Returns a new instance of MyTasks.



17
18
19
20
21
22
23
24
# File 'lib/checkoff/my_tasks.rb', line 17

def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
               client: Checkoff::Clients.new(config: config).client,
               projects: Checkoff::Projects.new(config: config,
                                                client: client))
  @config = config
  @client = client
  @projects = projects
end

Instance Attribute Details

#projectsObject (readonly)

Returns the value of attribute projects.



15
16
17
# File 'lib/checkoff/my_tasks.rb', line 15

def projects
  @projects
end

Instance Method Details

#by_my_tasks_section(tasks, project_gid) ⇒ Object

Given a list of tasks in ‘My Tasks’, pull a Hash of tasks with section name -> task list



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/checkoff/my_tasks.rb', line 44

def by_my_tasks_section(tasks, project_gid)
  by_section = {}
  sections = client.sections.get_sections_for_project(project_gid: project_gid)
  sections.each { |section| by_section[section_key(section.name)] = [] }
  tasks.each do |task|
    assignee_section = task.assignee_section
    current_section = section_key(assignee_section.name)
    by_section[current_section] ||= []
    by_section[current_section] << task
  end
  by_section
end

#section_key(name) ⇒ Object



36
37
38
39
40
# File 'lib/checkoff/my_tasks.rb', line 36

def section_key(name)
  return nil if name == 'Recently assigned'

  name
end

#tasks_by_section_for_my_tasks(project, extra_fields: []) ⇒ Object

Given a ‘My Tasks’ project object, pull all tasks, then provide a Hash of tasks with section name -> task list of the uncompleted tasks.



29
30
31
32
33
34
# File 'lib/checkoff/my_tasks.rb', line 29

def tasks_by_section_for_my_tasks(project, extra_fields: [])
  raw_tasks = projects.tasks_from_project(project,
                                          extra_fields: extra_fields + ['assignee_section.name'])
  active_tasks = projects.active_tasks(raw_tasks)
  by_my_tasks_section(active_tasks, project.gid)
end