Class: Wf::Workitem
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Wf::Workitem
- Defined in:
- app/models/wf/workitem.rb
Instance Method Summary collapse
- #finished_by?(user) ⇒ Boolean
- #name ⇒ Object
- #owned_by?(user) ⇒ Boolean
- #pass_guard?(arc, has_passed = false) ⇒ Boolean
- #started_by?(user) ⇒ Boolean
Instance Method Details
#finished_by?(user) ⇒ Boolean
61 62 63 |
# File 'app/models/wf/workitem.rb', line 61 def finished_by?(user) started? && owned_by?(user) && holding_user == user end |
#name ⇒ Object
44 45 46 |
# File 'app/models/wf/workitem.rb', line 44 def name "Workitem -> #{id}" end |
#owned_by?(user) ⇒ Boolean
65 66 67 68 69 70 71 72 73 |
# File 'app/models/wf/workitem.rb', line 65 def owned_by?(user) Wf::Party.joins(workitem_assignments: { workitem: %i[transition case] }) .where(Wf::Transition.table_name => { trigger_type: Wf::Transition.trigger_types[:user] }) .where(Wf::Case.table_name => { state: Wf::Case.states[:active] }) .where(Wf::Workitem.table_name => { state: Wf::Workitem.states.values_at(:started, :enabled) }) .where(Wf::Workitem.table_name => { id: id }).map do |party| party.partable.users.to_a end.flatten.include?(user) end |
#pass_guard?(arc, has_passed = false) ⇒ Boolean
48 49 50 51 52 53 54 55 |
# File 'app/models/wf/workitem.rb', line 48 def pass_guard?(arc, has_passed = false) if arc.guards_count == 0 !has_passed else entry = entries.where(user: holding_user).first arc.guards.all? { |guard| guard.pass?(entry, self) } end end |
#started_by?(user) ⇒ Boolean
57 58 59 |
# File 'app/models/wf/workitem.rb', line 57 def started_by?(user) enabled? && owned_by?(user) end |