Class: Wf::CaseCommand::ConsumeToken

Inherits:
Object
  • Object
show all
Includes:
SimpleCommand
Defined in:
app/models/wf/case_command/consume_token.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(wf_case, place, locked_item = nil) ⇒ ConsumeToken

Returns a new instance of ConsumeToken.



7
8
9
10
11
# File 'app/models/wf/case_command/consume_token.rb', line 7

def initialize(wf_case, place, locked_item = nil)
  @wf_case  = wf_case
  @place    = place
  @locked_item = locked_item
end

Instance Attribute Details

#locked_itemObject (readonly)

Returns the value of attribute locked_item.



6
7
8
# File 'app/models/wf/case_command/consume_token.rb', line 6

def locked_item
  @locked_item
end

#placeObject (readonly)

Returns the value of attribute place.



6
7
8
# File 'app/models/wf/case_command/consume_token.rb', line 6

def place
  @place
end

#wf_caseObject (readonly)

Returns the value of attribute wf_case.



6
7
8
# File 'app/models/wf/case_command/consume_token.rb', line 6

def wf_case
  @wf_case
end

Instance Method Details

#callObject



13
14
15
16
17
18
19
20
21
# File 'app/models/wf/case_command/consume_token.rb', line 13

def call
  Wf::ApplicationRecord.transaction do
    if locked_item
      wf_case.tokens.where(place: place, state: :locked, locked_workitem_id: locked_item.id).update(consumed_at: Time.zone.now, state: :consumed)
    else
      wf_case.tokens.where(id: wf_case.tokens.where(place: place, state: :free).first&.id).update(consumed_at: Time.zone.now, state: :consumed)
    end
  end
end