Employer form mostly working with persist to db
This commit is contained in:
@@ -6,12 +6,16 @@ class EmployerSetupForm
|
||||
|
||||
attribute :current_step, :string, default: FIRST_STEP
|
||||
attribute :pl_plan_key, :string
|
||||
attribute :employer_setup_process_id, :integer
|
||||
|
||||
def initialize(params = {})
|
||||
# if params.present?
|
||||
# params = permitted_params(params)
|
||||
# end
|
||||
# @current_step = params["current_step"]
|
||||
# @employer_setup_process_id = params["employer_setup_process_id"]
|
||||
super(params)
|
||||
|
||||
unless self.steps.first == FIRST_STEP
|
||||
raise StepMisalignmentError, "FIRST_STEP does not match first entry in steps"
|
||||
end
|
||||
@@ -53,7 +57,7 @@ class EmployerSetupForm
|
||||
end
|
||||
|
||||
def permitted_params(params)
|
||||
params.require(:employer_setup_data).permit(
|
||||
params.permit(
|
||||
:pl_plan_key,
|
||||
:current_step
|
||||
)
|
||||
@@ -66,15 +70,16 @@ class EmployerSetupForm
|
||||
]
|
||||
end
|
||||
|
||||
# def save
|
||||
# if valid?
|
||||
# EmployerSetupGeneralInformationForm.new(attributes[:general_information_data]).save
|
||||
# EmployerSetupPlansForm.new(attributes[:plans_data]).save
|
||||
# EmployerSetupNetworkExceptionsForm.new(attributes[:network_exceptions_data]).save
|
||||
# true
|
||||
# else
|
||||
# false
|
||||
# end
|
||||
# end
|
||||
def save
|
||||
if valid?
|
||||
process = EmployerSetupProcess.find(@employer_setup_process_id)
|
||||
process.update(
|
||||
status: "entered"
|
||||
)
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -7,16 +7,17 @@ class EmployerSetupGeneralInformationForm
|
||||
attribute :group_number, :string
|
||||
attribute :dental, :boolean, default: false
|
||||
attribute :pl_plan_key, :string
|
||||
attribute :effect_date, :string
|
||||
attribute :effective_date, :string
|
||||
# attribute :number_of_plans, :integer
|
||||
attribute :network, :string
|
||||
# attribute :number_of_additional_network_logos, :integer
|
||||
|
||||
attr_accessor :employer_setup_process_id
|
||||
|
||||
validates :name, presence: true
|
||||
validates :employer_logo, presence: true
|
||||
validates :group_number, presence: true
|
||||
validates :pl_plan_key, presence: true
|
||||
validates :effect_date, presence: true
|
||||
validates :effective_date, presence: true
|
||||
# validates :number_of_plans, presence: true
|
||||
validates :network, presence: true
|
||||
# validates :number_of_additional_network_logos, presence: true if network = "cigna+"
|
||||
@@ -27,11 +28,27 @@ class EmployerSetupGeneralInformationForm
|
||||
# super(permitted_attributes)
|
||||
# end
|
||||
|
||||
def initialize(params = {})
|
||||
def initialize(employer_setup_process_id, params = {})
|
||||
@employer_setup_process_id = employer_setup_process_id
|
||||
if params.present?
|
||||
params = permitted_params(params)
|
||||
form_params = permitted_params(params)
|
||||
super(form_params)
|
||||
else
|
||||
super(params)
|
||||
load_from_process
|
||||
end
|
||||
super(params)
|
||||
end
|
||||
|
||||
def load_from_process
|
||||
process = EmployerSetupProcess.find(@employer_setup_process_id)
|
||||
|
||||
self.name = process.employer_name
|
||||
# self.employer_logo = process.
|
||||
self.group_number = process.group_number
|
||||
self.dental = false
|
||||
self.pl_plan_key = process.pl_plan_key
|
||||
self.effective_date = process.effective_date
|
||||
self.network = process.network_provider
|
||||
end
|
||||
|
||||
def permitted_params(params)
|
||||
@@ -41,7 +58,7 @@ class EmployerSetupGeneralInformationForm
|
||||
:group_number,
|
||||
:dental,
|
||||
:pl_plan_key,
|
||||
:effect_date,
|
||||
:effective_date,
|
||||
:number_of_plans,
|
||||
:network,
|
||||
:number_of_additional_network_logos
|
||||
@@ -52,48 +69,57 @@ class EmployerSetupGeneralInformationForm
|
||||
# Implement logic to save data to models after all steps are complete
|
||||
# For example, create a User record with the collected data
|
||||
if valid?
|
||||
hl_plan_code = Vhcs::HlPlanCode.create!(
|
||||
process = EmployerSetupProcess.find(@employer_setup_process_id)
|
||||
process.update(
|
||||
employer_name: name,
|
||||
group_number: group_number,
|
||||
medical_number: group_number,
|
||||
dental_number: '',
|
||||
plan_key: pl_plan_key,
|
||||
effect_date: effect_date
|
||||
)
|
||||
|
||||
# Replace fairos_info with template like for benefits
|
||||
fairos_info = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first
|
||||
hlrx_cros_ref = Vhcs::HlrxCrosRef.create!(
|
||||
group_no: group_number,
|
||||
rx_group_id: group_number,
|
||||
help_desk: fairos_info.help_desk,
|
||||
customer_service: fairos_info.customer_service,
|
||||
web_url: fairos_info.web_url,
|
||||
pl_plan_key: pl_plan_key
|
||||
)
|
||||
|
||||
web_employer = BrittonWeb::Employers.create!(
|
||||
name: name,
|
||||
pl_plan_key: pl_plan_key,
|
||||
dental_plan: dental,
|
||||
single_card_template: 'FairosRxIDCard',
|
||||
logo: employer_logo.original_filename
|
||||
effective_date: effective_date,
|
||||
network_provider: network
|
||||
)
|
||||
|
||||
default_network_logo =
|
||||
case
|
||||
when network.include?("cig")
|
||||
"CignaLogo.png"
|
||||
when network.include?("med")
|
||||
"Logo_MC_PMS.png"
|
||||
else
|
||||
"CignaLogo.png"
|
||||
end
|
||||
# hl_plan_code = Vhcs::HlPlanCode.create!(
|
||||
# group_number: group_number,
|
||||
# medical_number: group_number,
|
||||
# dental_number: '',
|
||||
# plan_key: pl_plan_key,
|
||||
# effect_date: effective_date
|
||||
# )
|
||||
|
||||
BrittonWeb::NetworkLogos.create!(
|
||||
employer_id: web_employer.id,
|
||||
net_logo: default_network_logo,
|
||||
default: true
|
||||
)
|
||||
# # Replace fairos_info with template like for benefits
|
||||
# fairos_info = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first
|
||||
# hlrx_cros_ref = Vhcs::HlrxCrosRef.create!(
|
||||
# group_no: group_number,
|
||||
# rx_group_id: group_number,
|
||||
# help_desk: fairos_info.help_desk,
|
||||
# customer_service: fairos_info.customer_service,
|
||||
# web_url: fairos_info.web_url,
|
||||
# pl_plan_key: pl_plan_key
|
||||
# )
|
||||
|
||||
# web_employer = BrittonWeb::Employers.create!(
|
||||
# name: name,
|
||||
# pl_plan_key: pl_plan_key,
|
||||
# dental_plan: dental,
|
||||
# single_card_template: 'FairosRxIDCard',
|
||||
# logo: employer_logo.original_filename
|
||||
# )
|
||||
|
||||
# default_network_logo =
|
||||
# case
|
||||
# when network.include?("cig")
|
||||
# "CignaLogo.png"
|
||||
# when network.include?("med")
|
||||
# "Logo_MC_PMS.png"
|
||||
# else
|
||||
# "CignaLogo.png"
|
||||
# end
|
||||
|
||||
# BrittonWeb::NetworkLogos.create!(
|
||||
# employer_id: web_employer.id,
|
||||
# net_logo: default_network_logo,
|
||||
# default: true
|
||||
# )
|
||||
|
||||
true
|
||||
else
|
||||
|
||||
@@ -5,15 +5,20 @@ class EmployerSetupNetworkExceptionsForm
|
||||
Network_exception = Struct.new(:network_logo, :exceptions)
|
||||
attribute :network_exceptions, :array_of_items, default: -> { [] }
|
||||
attribute :pl_plan_key, :string
|
||||
attribute :number_of_additional_network_logos, :integer
|
||||
|
||||
attr_accessor :employer_setup_process_id
|
||||
|
||||
# validates :network_exceptions, presence: true if number_of_additional_network_logos > 0
|
||||
|
||||
def initialize(params = {})
|
||||
if params.present? && params[:employer_setup_network_exceptions_form].is_a?(ActionController::Parameters)
|
||||
params = permitted_params(params)
|
||||
def initialize(employer_setup_process_id, params = {})
|
||||
@employer_setup_process_id = employer_setup_process_id
|
||||
if params.present?
|
||||
form_params = permitted_params(params)
|
||||
super(form_params)
|
||||
else
|
||||
super(params)
|
||||
end
|
||||
super(params)
|
||||
|
||||
end
|
||||
|
||||
def permitted_params(params)
|
||||
@@ -67,20 +72,23 @@ class EmployerSetupNetworkExceptionsForm
|
||||
# Implement logic to save data to models after all steps are complete
|
||||
# For example, create a User record with the collected data
|
||||
if valid?
|
||||
employer = BrittonWeb::Employers.find_by(pl_plan_key: pl_plan_key)
|
||||
|
||||
network_exceptions_data = process_for_save(network_exceptions)
|
||||
network_exceptions_data.each do |ne|
|
||||
ne['exceptions'].each do |ex|
|
||||
BrittonWeb::NetworkLogos.create!(
|
||||
employer_id: employer.id,
|
||||
net_logo: ne['network_logo'].original_filename,
|
||||
exception_type: ex['type'].downcase,
|
||||
exception_value: ex['value'],
|
||||
default: false
|
||||
)
|
||||
end
|
||||
process = EmployerSetupProcess.find(@employer_setup_process_id)
|
||||
# employer = BrittonWeb::Employers.find_by(pl_plan_key: pl_plan_key)
|
||||
if network_exceptions
|
||||
network_exceptions_data = process_for_save(network_exceptions)
|
||||
end
|
||||
# network_exceptions_data.each do |ne|
|
||||
# ne['exceptions'].each do |ex|
|
||||
# BrittonWeb::NetworkLogos.create!(
|
||||
# employer_id: employer.id,
|
||||
# net_logo: ne['network_logo'].original_filename,
|
||||
# exception_type: ex['type'].downcase,
|
||||
# exception_value: ex['value'],
|
||||
# default: false
|
||||
# )
|
||||
# end
|
||||
# end
|
||||
|
||||
true
|
||||
else
|
||||
false
|
||||
|
||||
@@ -2,25 +2,31 @@ class EmployerSetupPlansForm
|
||||
include ActiveModel::Model
|
||||
include ActiveModel::Attributes
|
||||
|
||||
PLAN_COLORS = ['atmosphere', 'copper', 'bluemana', 'bronze', 'cobalt', 'verdigris']
|
||||
PLAN_COLORS = ['atmosphere', 'verdigris', 'cobalt', 'bluemana']
|
||||
|
||||
# attribute :plans, array: true, default: []
|
||||
attribute :plans, array: true, default: -> { [new_plan] }
|
||||
attribute :plans, array: true, default: -> { [Plan.new] }
|
||||
attribute :pl_plan_key, :string
|
||||
attribute :number_of_plans, :integer
|
||||
attribute :benefit_descs, hash: true, default: -> { new_plan }
|
||||
attribute :benefit_descs, hash: true, default: -> { Plan.new }
|
||||
|
||||
attr_accessor :plan_templates
|
||||
attr_accessor :benefits_template
|
||||
attr_accessor :employer_setup_process_id
|
||||
|
||||
validates :plans, presence: true
|
||||
validates :benefit_descs, presence: true
|
||||
|
||||
def initialize(params = {})
|
||||
def initialize(employer_setup_process_id, params = {})
|
||||
@employer_setup_process_id = employer_setup_process_id
|
||||
if params.present?
|
||||
params = permitted_params(params)
|
||||
form_params = permitted_params(params)
|
||||
super(form_params)
|
||||
else
|
||||
super(params)
|
||||
process_plans = EmployerSetupProcess.find(@employer_setup_process_id).plans
|
||||
if process_plans.present?
|
||||
self.plans = process_plans
|
||||
end
|
||||
end
|
||||
super(params)
|
||||
|
||||
@plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK")
|
||||
@benefits_template = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence)
|
||||
@@ -61,6 +67,11 @@ class EmployerSetupPlansForm
|
||||
plan
|
||||
end
|
||||
|
||||
def process_params(employer_setup_process_id)
|
||||
process = EmployerSetupProcess.find(employer_setup_process_id)
|
||||
process.plans
|
||||
end
|
||||
|
||||
def permitted_params(params)
|
||||
params.require(:employer_setup_plans_form).permit(
|
||||
:pl_plan_key,
|
||||
@@ -90,27 +101,54 @@ class EmployerSetupPlansForm
|
||||
end
|
||||
|
||||
def permited_plans_keys
|
||||
(1..14).map { |i| "benefit_#{i}".to_sym }.push(:plan_id)
|
||||
(1..14).map { |i| "benefit_#{i}".to_sym }.push(:plan_id, :id)
|
||||
end
|
||||
|
||||
def save
|
||||
# Implement logic to save data to models after all steps are complete
|
||||
# For example, create a User record with the collected data
|
||||
if valid?
|
||||
plans.each do |plan|
|
||||
process = EmployerSetupProcess.find(@employer_setup_process_id)
|
||||
# process.plans.update(plans: plans)
|
||||
|
||||
planss = Array.wrap(plans)
|
||||
|
||||
plans.each_with_index do |plan, i|
|
||||
plan_info = plan.last
|
||||
plan_id = plan_info.delete(:plan_id).to_i
|
||||
plan_id = plan_info[:plan_id].present? ? plan_info[:plan_id].to_i : "temp #{i}"
|
||||
plan_info.delete(:plan_id)
|
||||
new_plan = process.plans.create(plan_id: plan_id)
|
||||
plan_info.each do |key, value|
|
||||
sequence = key.delete_prefix("benefit_").to_i
|
||||
Vhcs::HlEgglestonCardBenefit.create(
|
||||
plan_id: plan_id,
|
||||
benefit_desc: benefit_descs["#{key}"],
|
||||
benefit: value,
|
||||
sequence: sequence,
|
||||
plan_key: pl_plan_key
|
||||
benefit = new_plan.plan_benefits.find_by(sequence: sequence)
|
||||
benefit.update(
|
||||
benefit: value
|
||||
)
|
||||
# Vhcs::HlEgglestonCardBenefit.create(
|
||||
# plan_id: plan_id,
|
||||
# benefit_desc: benefit_descs["#{key}"],
|
||||
# benefit: value,
|
||||
# sequence: sequence,
|
||||
# plan_key: pl_plan_key
|
||||
# )
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# plans.each do |plan|
|
||||
# plan_info = plan.last
|
||||
# plan_id = plan_info.delete(:plan_id).to_i
|
||||
# plan_info.each do |key, value|
|
||||
# sequence = key.delete_prefix("benefit_").to_i
|
||||
# Vhcs::HlEgglestonCardBenefit.create(
|
||||
# plan_id: plan_id,
|
||||
# benefit_desc: benefit_descs["#{key}"],
|
||||
# benefit: value,
|
||||
# sequence: sequence,
|
||||
# plan_key: pl_plan_key
|
||||
# )
|
||||
# end
|
||||
# end
|
||||
true
|
||||
else
|
||||
false
|
||||
|
||||
Reference in New Issue
Block a user