Created
July 2, 2015 06:53
-
-
Save klippx/51b224f888cc12cdea4b to your computer and use it in GitHub Desktop.
Final result: PouchOrder::WorkflowManager
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module PouchOrder::WorkflowManager | |
extend ActiveSupport::Concern | |
included do | |
include Workflow | |
workflow_column :status | |
workflow do | |
state :new do | |
event :receive, transitions_to: :received | |
end | |
state :received do | |
event :replace, transitions_to: :replaced | |
event :make_half_tablet_substitution_control, transitions_to: :half_tablet_substitution_control | |
end | |
state :half_tablet_substitution_control do | |
event :substitutions_done, transitions_to: :interaction_control | |
end | |
state :interaction_control do | |
event :interactions_done, transitions_to: :dosage_control | |
end | |
state :dosage_control do | |
event :confirm_dosage, transitions_to: :awaiting_approval | |
end | |
state :awaiting_approval do | |
event :approve, transitions_to: :approved | |
event :reject, transitions_to: :rejected | |
event :replace, transitions_to: :replaced | |
end | |
state :approved do | |
event :upload, transitions_to: :uploading | |
event :replace, transitions_to: :replaced | |
end | |
state :uploading do | |
event :uploaded, transitions_to: :sent_to_machine | |
end | |
state :sent_to_machine do | |
event :sort, transitions_to: :sorted | |
end | |
state :sorted do | |
event :ship, transitions_to: :shipped | |
end | |
state :shipped do | |
event :unship, transitions_to: :unshipped | |
end | |
state :unshipped do | |
event :ship, transitions_to: :shipped | |
end | |
state :rejected | |
state :replaced | |
on_transition do |from, to, triggering_event, *event_args| | |
write_audit( | |
action: 'update', | |
audited_changes: { | |
status: [from, to] | |
} | |
) | |
end | |
end | |
end | |
def on_received_entry(new_state, event, *args) | |
make_half_tablet_substitution_control! | |
Resque.enqueue(HalfTabletSubstitutionJob, self.id) | |
end | |
def substitutions_done | |
Resque.enqueue(InteractionJob, self.id) | |
end | |
def interactions_done | |
Resque.enqueue(DosageControlJob, self.id) | |
end | |
def on_awaiting_approval_entry(new_state, event, *args) | |
approve! if Settings.pouch_order_auto_approval == "true" && can_be_auto_approved? | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment