Files
baclight/app/controllers/employer_setup_controller.rb
T
Jason Jordan 3fbece7da6 Init dump
2025-11-24 08:22:44 -05:00

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