diff --git a/app/models/proposal.rb b/app/models/proposal.rb index 9e5af7e72..3eeb5cff4 100644 --- a/app/models/proposal.rb +++ b/app/models/proposal.rb @@ -1,7 +1,29 @@ # frozen_string_literal: true class Proposal < ApplicationRecord - include Proposal::State + enum :state, { + submitted: 'submitted', + soft_accepted: 'soft accepted', + soft_waitlisted: 'soft waitlisted', + soft_rejected: 'soft rejected', + accepted: 'accepted', + waitlisted: 'waitlisted', + rejected: 'rejected', + withdrawn: 'withdrawn', + not_accepted: 'not accepted' + }, default: :submitted + + SOFT_STATES = [:soft_accepted, :soft_waitlisted, :soft_rejected, :submitted].freeze + FINAL_STATES = [:accepted, :waitlisted, :rejected, :withdrawn, :not_accepted].freeze + + SOFT_TO_FINAL = { + soft_accepted: :accepted, + soft_rejected: :rejected, + soft_waitlisted: :waitlisted, + submitted: :rejected + }.with_indifferent_access.freeze + + BECOMES_PROGRAM_SESSION = [:accepted, :waitlisted].freeze has_many :public_comments, dependent: :destroy has_many :internal_comments, dependent: :destroy @@ -142,6 +164,11 @@ def decline program_session.update(state: :declined) end + # draft? is an alias for submitted? + def draft? + submitted? + end + def finalized? FINAL_STATES.include?(state.to_sym) end diff --git a/app/models/proposal/state.rb b/app/models/proposal/state.rb deleted file mode 100644 index b67aa0f12..000000000 --- a/app/models/proposal/state.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Proposal::State - extend ActiveSupport::Concern - - SOFT_STATES = [:soft_accepted, :soft_waitlisted, :soft_rejected, :submitted].freeze - FINAL_STATES = [:accepted, :waitlisted, :rejected, :withdrawn, :not_accepted].freeze - - SOFT_TO_FINAL = { - soft_accepted: :accepted, - soft_rejected: :rejected, - soft_waitlisted: :waitlisted, - submitted: :rejected - }.with_indifferent_access.freeze - - BECOMES_PROGRAM_SESSION = [:accepted, :waitlisted].freeze - - included do - enum :state, { - submitted: 'submitted', - soft_accepted: 'soft accepted', - soft_waitlisted: 'soft waitlisted', - soft_rejected: 'soft rejected', - accepted: 'accepted', - waitlisted: 'waitlisted', - rejected: 'rejected', - withdrawn: 'withdrawn', - not_accepted: 'not accepted' - }, default: :submitted - - # draft? is an alias for submitted? - def draft? - submitted? - end - end -end