57 lines
1.7 KiB
Ruby
57 lines
1.7 KiB
Ruby
|
|
class EmployerSetupForm
|
||
|
|
include ActiveModel::Model
|
||
|
|
include ActiveModel::Attributes
|
||
|
|
|
||
|
|
FIRST_STEP = "general_information"
|
||
|
|
|
||
|
|
attribute :current_step, :string, default: FIRST_STEP
|
||
|
|
attribute :general_information_data
|
||
|
|
attribute :plans_data
|
||
|
|
attribute :network_exceptions_data
|
||
|
|
|
||
|
|
def initialize(params = {})
|
||
|
|
unless self.steps.first == FIRST_STEP
|
||
|
|
raise StepMisalignmentError, "FIRST_STEP does not match first entry in steps"
|
||
|
|
end
|
||
|
|
@general_information_data = EmployerSetupGeneralInformationForm.new(attributes[:general_information_data])
|
||
|
|
@plans_data = EmployerSetupPlansForm.new(attributes[:plans_data])
|
||
|
|
@network_exceptions_data = EmployerSetupNetworkExceptionsForm.new(attributes[:network_exceptions_data])
|
||
|
|
end
|
||
|
|
|
||
|
|
def steps
|
||
|
|
%w[general_information plans network_exceptions summary]
|
||
|
|
end
|
||
|
|
|
||
|
|
def current_step_view
|
||
|
|
"employer_setup/#{self.current_step}"
|
||
|
|
end
|
||
|
|
|
||
|
|
def next_step
|
||
|
|
index = steps.index(current_step)
|
||
|
|
if index && index < steps.length - 1
|
||
|
|
if steps[index + 1] == 'network_exceptions' && general_information_data.number_of_additional_network_logos == 0
|
||
|
|
steps[index + 2]
|
||
|
|
else
|
||
|
|
steps[index + 1]
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def previous_step
|
||
|
|
index = steps.index(current_step)
|
||
|
|
steps[index - 1] if index && index > 0
|
||
|
|
end
|
||
|
|
|
||
|
|
def save
|
||
|
|
if valid?
|
||
|
|
pl_plan_key = attributes[:general_information_data][:pl_plan_key]
|
||
|
|
EmployerSetupGeneralInformationForm.new(attributes[:general_information_data]).save
|
||
|
|
EmployerSetupPlansForm.new(attributes[:plans_data]).save(pl_plan_key)
|
||
|
|
EmployerSetupNetworkExceptionsForm.new(attributes[:network_exceptions_data]).save(pl_plan_key)
|
||
|
|
true
|
||
|
|
else
|
||
|
|
false
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|