class BeTaskable::TaskRunner

Attributes

task[R]

Public Class Methods

new(task) click to toggle source
# File lib/be_taskable/task_runner.rb, line 6
def initialize(task)
        raise ArgumentError, "Invalid task" unless task.is_a?(BeTaskable::Task)
        @task = task
end

Public Instance Methods

_assignees() click to toggle source
# File lib/be_taskable/task_runner.rb, line 78
def _assignees
        resolver.assignees_for_task(task)
end
_assignments() click to toggle source
# File lib/be_taskable/task_runner.rb, line 82
def _assignments
        task.assignments
end
_delete_unconfirmed_assignments() click to toggle source
# File lib/be_taskable/task_runner.rb, line 36
def _delete_unconfirmed_assignments
        _assignments.uncompleted.unconfirmed.delete_all
end
_make_task_irrelevant() click to toggle source
# File lib/be_taskable/task_runner.rb, line 48
def _make_task_irrelevant
        # assignments will be just deleted
        # no need to update them
        task.make_irrelevant if task.can_make_irrelevant?
end
_make_task_relevant() click to toggle source
# File lib/be_taskable/task_runner.rb, line 44
def _make_task_relevant
        task.make_relevant if task.can_make_relevant?
end
_mark_assignments_as_unconfirmed() click to toggle source
# File lib/be_taskable/task_runner.rb, line 32
def _mark_assignments_as_unconfirmed
        _assignments.uncompleted.update_all(confirmed: false)
end
_relevant?() click to toggle source
# File lib/be_taskable/task_runner.rb, line 72
def _relevant?
        # if the taskable cannot be found then assume it is not relevant
        return false unless task.taskable
        resolver.is_task_relevant?(task)
end
_update_assignments() click to toggle source
# File lib/be_taskable/task_runner.rb, line 54
def _update_assignments
        _assignees.each do |assignee|
                # find the assignment
                assignment = _assignments.where(assignee_id: assignee.id).last

                unless assignment
                        assignment = _assignments.create(assignee: assignee)
                end
                
                assignment.complete_by = resolver.due_date_for_assignment(assignment)
                assignment.visible_at = resolver.visible_date_for_assignment(assignment)
                assignment.label = resolver.label_for_assignment(assignment)
                assignment.url = resolver.url_for_assignment(assignment)
                assignment.confirmed = true
                assignment.save
        end
end
_update_task_label() click to toggle source
# File lib/be_taskable/task_runner.rb, line 40
def _update_task_label
        task.update_attribute(:label, resolver.label_for_task(task))
end
refresh() click to toggle source
# File lib/be_taskable/task_runner.rb, line 11
def refresh

        return if task.completed?

        _mark_assignments_as_unconfirmed

        if _relevant?
                _make_task_relevant
                _update_task_label
                _update_assignments
        else
                _make_task_irrelevant
        end

        _delete_unconfirmed_assignments
end
resolver() click to toggle source
# File lib/be_taskable/task_runner.rb, line 28
def resolver
        task.resolver
end