192 lines
5.7 KiB
Ruby
192 lines
5.7 KiB
Ruby
|
|
class EmployerSetupController < ApplicationController
|
||
|
|
def new
|
||
|
|
@top_form = EmployerSetupForm.new(session[:employer_setup_data])
|
||
|
|
case @top_form.current_step
|
||
|
|
when 'general_information'
|
||
|
|
@form = EmployerSetupGeneralInformationForm.new(session[:employer_setup_data]&.dig('general_information_data'))
|
||
|
|
when 'plans'
|
||
|
|
@form = EmployerSetupPlansForm.new(session[:employer_setup_data]&.dig('plans_data'))
|
||
|
|
when 'network_exceptions'
|
||
|
|
@form = EmployerSetupNetworkExceptionsForm.new(session[:employer_setup_data]&.dig('network_exceptions_data'))
|
||
|
|
when 'summary'
|
||
|
|
@form = @top_form
|
||
|
|
end
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
|
||
|
|
def create
|
||
|
|
@top_form = EmployerSetupForm.new(session[:employer_setup_data])
|
||
|
|
if @top_form.current_step != 'summary'
|
||
|
|
if process_step(@top_form.current_step)
|
||
|
|
session[:employer_setup_data]['current_step'] = @top_form.next_step
|
||
|
|
redirect_to new_employer_setup_path
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
else
|
||
|
|
if @top_form.save
|
||
|
|
session.delete(:employer_setup_data)
|
||
|
|
redirect_to root_path, notice: "Employer setup successfully!"
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
case @top_form.current_step
|
||
|
|
when 'general_information'
|
||
|
|
@form = EmployerSetupGeneralInformationForm.new(general_information_params)
|
||
|
|
if @form.valid?
|
||
|
|
session[:employer_setup_data]['general_information_data'] = general_information_params
|
||
|
|
session[:employer_setup_data]['current_step'] = @top_form.next_step
|
||
|
|
redirect_to new_employer_setup_path
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
when 'plans'
|
||
|
|
@form = EmployerSetupPlansForm.new(plans_params)
|
||
|
|
if @form.valid?
|
||
|
|
session[:employer_setup_data]['plans_data'] = plans_params
|
||
|
|
session[:employer_setup_data]['current_step'] = @top_form.next_step
|
||
|
|
redirect_to new_employer_setup_path
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
when 'network_exceptions'
|
||
|
|
@form = EmployerSetupNetworkExceptionsForm.new(network_exceptions_params)
|
||
|
|
if @form.valid?
|
||
|
|
session[:employer_setup_data]['network_exceptions_data'] = network_exceptions_params
|
||
|
|
session[:employer_setup_data]['current_step'] = @top_form.next_step
|
||
|
|
redirect_to new_employer_setup_path
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
when 'summary'
|
||
|
|
@form = EmployerSetupForm.new(session[:employer_setup_data])
|
||
|
|
if @form.save
|
||
|
|
session.delete(:employer_setup_data)
|
||
|
|
redirect_to root_path, notice: "Employer setup successfully!"
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def update
|
||
|
|
@form = RegistrationForm.new(registration_params)
|
||
|
|
|
||
|
|
if params[:back_button]
|
||
|
|
@form.current_step = @form.previous_step
|
||
|
|
elsif params[:skip_newsletter]
|
||
|
|
@form.current_step = @form.next_step # Skip newsletter step
|
||
|
|
end
|
||
|
|
|
||
|
|
render :new
|
||
|
|
end
|
||
|
|
|
||
|
|
private
|
||
|
|
|
||
|
|
def general_information_params
|
||
|
|
params.require(:employer_setup_general_information_form).permit(
|
||
|
|
:name,
|
||
|
|
:employer_logo,
|
||
|
|
:group_number,
|
||
|
|
:dental,
|
||
|
|
:pl_plan_key,
|
||
|
|
:effect_date,
|
||
|
|
:number_of_plans,
|
||
|
|
:network,
|
||
|
|
:number_of_additional_network_logos
|
||
|
|
)
|
||
|
|
end
|
||
|
|
|
||
|
|
def plans_params
|
||
|
|
params.require(:employer_setup_plans_form).permit(
|
||
|
|
plans: permited_plans_keys,
|
||
|
|
benefit_descs: benefit_sequence_keys
|
||
|
|
)
|
||
|
|
end
|
||
|
|
|
||
|
|
def network_exceptions_params
|
||
|
|
params.require(:employer_setup_network_exceptions_form).permit(
|
||
|
|
network_exceptions: [:network_logo, exceptions: [:type, :value]],
|
||
|
|
)
|
||
|
|
end
|
||
|
|
|
||
|
|
def process_step(step_name)
|
||
|
|
form_name = "employer_setup_#{step_name}_form".camelize.constantize
|
||
|
|
form_params_name = "#{step_name}_params".to_sym
|
||
|
|
allowed_params = [:general_information_params, :plans_params, :network_exceptions_params]
|
||
|
|
if allowed_params.include?(form_params_name)
|
||
|
|
form_params = send(form_params_name)
|
||
|
|
@form = form_name.new(form_params)
|
||
|
|
if @form.valid?
|
||
|
|
session[:employer_setup_data]["#{step_name}_data"] = form_params
|
||
|
|
true
|
||
|
|
else
|
||
|
|
false
|
||
|
|
end
|
||
|
|
end
|
||
|
|
false
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
session[:employer_setup_data]['current_step'] = @top_form.next_step
|
||
|
|
redirect_to new_employer_setup_path
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
when 'general_information'
|
||
|
|
@form = EmployerSetupGeneralInformationForm.new(general_information_params)
|
||
|
|
if @form.valid?
|
||
|
|
session[:employer_setup_data]['general_information_data'] = general_information_params
|
||
|
|
session[:employer_setup_data]['current_step'] = @top_form.next_step
|
||
|
|
redirect_to new_employer_setup_path
|
||
|
|
else
|
||
|
|
render @top_form.current_step_view
|
||
|
|
end
|
||
|
|
|
||
|
|
# def employer_setup_params
|
||
|
|
# params.require(:employer_setup_form).permit(
|
||
|
|
# :current_step,
|
||
|
|
# :name,
|
||
|
|
# :employer_logo,
|
||
|
|
# :group_number,
|
||
|
|
# :pl_plan_key,
|
||
|
|
# :effect_date,
|
||
|
|
# :number_of_plans,
|
||
|
|
# :network,
|
||
|
|
# :number_of_additional_network_logos,
|
||
|
|
# network_exceptions: [:network_logo, exceptions: [:type, :value]],
|
||
|
|
# plans: permited_plans_keys,
|
||
|
|
# benefit_descs: benefit_sequence_keys
|
||
|
|
# )
|
||
|
|
# end
|
||
|
|
|
||
|
|
def benefit_sequence_keys
|
||
|
|
(1..14).map { |i| i.to_s.to_sym }
|
||
|
|
end
|
||
|
|
|
||
|
|
def permited_plans_keys
|
||
|
|
benefit_sequence_keys.push(:plan_id)
|
||
|
|
end
|
||
|
|
|
||
|
|
# def plans_params
|
||
|
|
# plans_keys = params[:plans]&.keys || []
|
||
|
|
|
||
|
|
# plans_keys.each_with_object({}) do |key, hash|
|
||
|
|
# if key == 'benefit_descs' || key.match?(/^plan_\d$/)
|
||
|
|
# hash[key.to_sym] = permited_plan_param_list
|
||
|
|
# end
|
||
|
|
# end
|
||
|
|
# end
|
||
|
|
|
||
|
|
# def permited_plan_param_list
|
||
|
|
# (1..14).map { |i| i.to_s.to_sym }.push(:plan_id)
|
||
|
|
# end
|
||
|
|
end
|