Class: Wf::Workitem

Inherits:
ApplicationRecord show all
Defined in:
app/models/wf/workitem.rb

Instance Method Summary collapse

Instance Method Details

#finished_by?(user) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'app/models/wf/workitem.rb', line 61

def finished_by?(user)
  started? && owned_by?(user) && holding_user == user
end

#nameObject



44
45
46
# File 'app/models/wf/workitem.rb', line 44

def name
  "Workitem -> #{id}"
end

#owned_by?(user) ⇒ Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (Boolean)


57
58
59
# File 'app/models/wf/workitem.rb', line 57

def started_by?(user)
  enabled? && owned_by?(user)
end