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