Sha256: f4112f0a25d577e9022ecab3ec859cacfb488bea6a379ff2a41421b985bc5d24

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

require 'forwardable'
require_relative 'projects'
require_relative 'workspaces'
require_relative 'clients'

module Checkoff
  # Query different sections of Asana 'My Tasks' projects
  class MyTasks
    MINUTE = 60
    LONG_CACHE_TIME = MINUTE * 15
    SHORT_CACHE_TIME = MINUTE * 5

    attr_reader :projects

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

    # Given a 'My Tasks' project object, pull all tasks, then provide
    # a Hash of tasks with section name -> task list of the
    # uncompleted tasks.
    def tasks_by_section_for_my_tasks(project)
      raw_tasks = projects.tasks_from_project(project,
                                              extra_fields: ['assignee_section.name'])
      active_tasks = projects.active_tasks(raw_tasks)
      by_my_tasks_section(active_tasks)
    end

    # Given a list of tasks in 'My Tasks', pull a Hash of tasks with
    # section name -> task list
    def by_my_tasks_section(tasks)
      by_section = {}
      tasks.each do |task|
        assignee_section = task.assignee_section
        current_section = assignee_section.name
        by_section[current_section] ||= []
        by_section[current_section] << task
      end
      by_section
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
checkoff-0.16.1 lib/checkoff/my_tasks.rb
checkoff-0.16.0 lib/checkoff/my_tasks.rb