Class: BeTaskable::TaskRunner
- Inherits:
-
Object
- Object
- BeTaskable::TaskRunner
- Defined in:
- lib/be_taskable/task_runner.rb
Instance Attribute Summary collapse
-
#task ⇒ Object
readonly
Returns the value of attribute task.
Instance Method Summary collapse
- #_assignees ⇒ Object
- #_assignments ⇒ Object
- #_delete_unconfirmed_assignments ⇒ Object
- #_make_task_irrelevant ⇒ Object
- #_make_task_relevant ⇒ Object
- #_mark_assignments_as_unconfirmed ⇒ Object
- #_relevant? ⇒ Boolean
- #_update_assignments ⇒ Object
- #_update_task_label ⇒ Object
-
#initialize(task) ⇒ TaskRunner
constructor
A new instance of TaskRunner.
- #refresh ⇒ Object
- #resolver ⇒ Object
Constructor Details
#initialize(task) ⇒ TaskRunner
Returns a new instance of TaskRunner.
6 7 8 9 |
# 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 |
Instance Attribute Details
#task ⇒ Object (readonly)
Returns the value of attribute task.
4 5 6 |
# File 'lib/be_taskable/task_runner.rb', line 4 def task @task end |
Instance Method Details
#_assignees ⇒ Object
78 79 80 |
# File 'lib/be_taskable/task_runner.rb', line 78 def _assignees resolver.assignees_for_task(task) end |
#_assignments ⇒ Object
82 83 84 |
# File 'lib/be_taskable/task_runner.rb', line 82 def _assignments task.assignments end |
#_delete_unconfirmed_assignments ⇒ Object
36 37 38 |
# File 'lib/be_taskable/task_runner.rb', line 36 def _delete_unconfirmed_assignments _assignments.uncompleted.unconfirmed.delete_all end |
#_make_task_irrelevant ⇒ Object
48 49 50 51 52 |
# 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 ⇒ Object
44 45 46 |
# 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 ⇒ Object
32 33 34 |
# File 'lib/be_taskable/task_runner.rb', line 32 def _mark_assignments_as_unconfirmed _assignments.uncompleted.update_all(confirmed: false) end |
#_relevant? ⇒ Boolean
72 73 74 75 76 |
# 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 ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# 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 ⇒ Object
40 41 42 |
# File 'lib/be_taskable/task_runner.rb', line 40 def _update_task_label task.update_attribute(:label, resolver.label_for_task(task)) end |
#refresh ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 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 ⇒ Object
28 29 30 |
# File 'lib/be_taskable/task_runner.rb', line 28 def resolver task.resolver end |