app/models/tramway/event/participant.rb in tramway-event-1.5.4 vs app/models/tramway/event/participant.rb in tramway-event-1.6

- old
+ new

@@ -1,3 +1,39 @@ class Tramway::Event::Participant < ::Tramway::Event::ApplicationRecord belongs_to :event, class_name: 'Tramway::Event::Event' + + state_machine :participation_state, initial: :requested do + state :requested + state :prev_approved + state :waiting + state :rejected + state :approved + state :without_answer + + event :previous_approve do + transition [ :requested, :without_answer, :waiting ] => :prev_approved + end + + event :wait_for_decision do + transition [ :requested, :without_answer ] => :waiting + end + + event :reject do + transition [ :requested, :without_answer, :waiting ] => :rejected + end + + event :approve do + transition prev_approved: :approved + end + + event :not_got_answer do + transition requested: :without_answer + end + end + + scope :requested, -> { where participation_state: :requested } + scope :waiting, -> { where participation_state: :waiting } + scope :prev_approved, -> { where participation_state: :prev_approved } + scope :rejected, -> { where participation_state: :rejected } + scope :approved, -> { where participation_state: :approved } + scope :without_answer, -> { where participation_state: :without_answer } end