|
1 | 1 | # frozen_string_literal: true |
2 | 2 |
|
3 | 3 | class Proposal < ApplicationRecord |
4 | | - include Proposal::State |
| 4 | + enum :state, { |
| 5 | + submitted: 'submitted', |
| 6 | + soft_accepted: 'soft accepted', |
| 7 | + soft_waitlisted: 'soft waitlisted', |
| 8 | + soft_rejected: 'soft rejected', |
| 9 | + accepted: 'accepted', |
| 10 | + waitlisted: 'waitlisted', |
| 11 | + rejected: 'rejected', |
| 12 | + withdrawn: 'withdrawn', |
| 13 | + not_accepted: 'not accepted' |
| 14 | + }, default: :submitted |
| 15 | + |
| 16 | + SOFT_STATES = [:soft_accepted, :soft_waitlisted, :soft_rejected, :submitted].freeze |
| 17 | + FINAL_STATES = [:accepted, :waitlisted, :rejected, :withdrawn, :not_accepted].freeze |
| 18 | + |
| 19 | + SOFT_TO_FINAL = { |
| 20 | + soft_accepted: :accepted, |
| 21 | + soft_rejected: :rejected, |
| 22 | + soft_waitlisted: :waitlisted, |
| 23 | + submitted: :rejected |
| 24 | + }.with_indifferent_access.freeze |
| 25 | + |
| 26 | + BECOMES_PROGRAM_SESSION = [:accepted, :waitlisted].freeze |
5 | 27 |
|
6 | 28 | has_many :public_comments, dependent: :destroy |
7 | 29 | has_many :internal_comments, dependent: :destroy |
@@ -142,6 +164,11 @@ def decline |
142 | 164 | program_session.update(state: :declined) |
143 | 165 | end |
144 | 166 |
|
| 167 | + # draft? is an alias for submitted? |
| 168 | + def draft? |
| 169 | + submitted? |
| 170 | + end |
| 171 | + |
145 | 172 | def finalized? |
146 | 173 | FINAL_STATES.include?(state.to_sym) |
147 | 174 | end |
|
0 commit comments