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