automate employer setup import from word and manual entry working
This commit is contained in:
@@ -2,40 +2,111 @@ class EmployerSetupPlansForm
|
||||
include ActiveModel::Model
|
||||
include ActiveModel::Attributes
|
||||
|
||||
attribute :plans, array: true, default: -> { [] }
|
||||
# attribute :benefit_descs, :hash, default: -> { {} }
|
||||
PLAN_COLORS = ['atmosphere', 'copper', 'bluemana', 'bronze', 'cobalt', 'verdigris']
|
||||
|
||||
attr_accessor :id_card_templates
|
||||
attr_accessor :id_card_template_benefits
|
||||
attr_accessor :benefit_descs
|
||||
# attribute :plans, array: true, default: []
|
||||
attribute :plans, array: true, default: -> { [new_plan] }
|
||||
attribute :pl_plan_key, :string
|
||||
attribute :number_of_plans, :integer
|
||||
attribute :benefit_descs, hash: true, default: -> { new_plan }
|
||||
|
||||
attr_accessor :plan_templates
|
||||
attr_accessor :benefits_template
|
||||
|
||||
validates :plans, presence: true
|
||||
# validates :benefit_descs, presence: true
|
||||
|
||||
validates :benefit_descs, presence: true
|
||||
|
||||
def initialize(params = {})
|
||||
if params.present?
|
||||
params = permitted_params(params)
|
||||
end
|
||||
super(params)
|
||||
|
||||
@id_card_templates = IdCardBenefitsTemplate.where.not(title: "BLANK")
|
||||
@id_card_template_benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence)
|
||||
|
||||
@plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK")
|
||||
@benefits_template = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence)
|
||||
|
||||
# if attributes.present? && attributes[:plans].present?
|
||||
# self.plans = Array(attributes[:plans])
|
||||
# else
|
||||
# self.plans = [new_plan]
|
||||
# end
|
||||
end
|
||||
|
||||
# def benefit_descs
|
||||
# @benefit_descs ||= {}
|
||||
# def plans_attributes=(attributes)
|
||||
# self.plans = attributes.values.map { |plan_attrs| Plan.new(plan_attrs) }
|
||||
# end
|
||||
|
||||
def save(pl_plan_key)
|
||||
def persisted?
|
||||
false
|
||||
end
|
||||
|
||||
|
||||
# The core method to initialize the array with a single blank item.
|
||||
def ensure_one_plan_exists
|
||||
if plans.empty?
|
||||
self.plans << PlanForm.new
|
||||
self.plans << PlanForm.new
|
||||
end
|
||||
end
|
||||
|
||||
def bulild_descs_plan
|
||||
self.benefit_descs = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence)
|
||||
end
|
||||
|
||||
def self.new_plan
|
||||
plan = {}
|
||||
self.permited_plans_keys.each do |key|
|
||||
plan[key] = ""
|
||||
end
|
||||
plan
|
||||
end
|
||||
|
||||
def permitted_params(params)
|
||||
params.require(:employer_setup_plans_form).permit(
|
||||
:pl_plan_key,
|
||||
plans: self.permited_plans_keys,
|
||||
benefit_descs: self.permited_plans_keys
|
||||
)
|
||||
end
|
||||
|
||||
def pull_from_employer_setup_form(attributes = {})
|
||||
if attributes['pl_plan_key']
|
||||
self.pl_plan_key = attributes['pl_plan_key']
|
||||
end
|
||||
if attributes['number_of_plans']
|
||||
self.number_of_plans = attributes['number_of_plans']
|
||||
end
|
||||
end
|
||||
|
||||
# def form_strong_params(attributes)
|
||||
# attributes.require(:employer_setup_plans_form).permit(
|
||||
# plans: permited_plans_keys,
|
||||
# benefit_descs: benefit_sequence_keys
|
||||
# )
|
||||
# end
|
||||
|
||||
def self.permited_plans_keys
|
||||
(1..14).map { |i| "benefit_#{i}".to_sym }.push(:plan_id)
|
||||
end
|
||||
|
||||
def permited_plans_keys
|
||||
(1..14).map { |i| "benefit_#{i}".to_sym }.push(:plan_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|
|
||||
plan_id = plan.delete(:plan_id)
|
||||
plan.each do |key, value|
|
||||
Vhcs::HLEgglestonCardBenefit.create(
|
||||
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: key,
|
||||
sequence: sequence,
|
||||
plan_key: pl_plan_key
|
||||
)
|
||||
end
|
||||
@@ -46,4 +117,32 @@ class EmployerSetupPlansForm
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
class PlanForm
|
||||
include ActiveModel::Model
|
||||
include ActiveModel::Attributes
|
||||
|
||||
attribute :plan_id, :string
|
||||
|
||||
def initialize(attributes = {})
|
||||
self.generate_attributes(14, "benefit_")
|
||||
super(attributes)
|
||||
end
|
||||
|
||||
def persisted?
|
||||
false
|
||||
end
|
||||
|
||||
def generate_attributes(count, prefix)
|
||||
count.times do |i|
|
||||
# attr_accessor :"#{prefix}#{i + 1}"
|
||||
self.class.attribute "#{prefix}#{i + 1}".to_sym, :string
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# dynamic_attribute_names.each do |attr_name|
|
||||
# # Define each attribute as a String type (you can customize the type)
|
||||
# self.class.attribute attr_name.to_sym, :string
|
||||
# end
|
||||
Reference in New Issue
Block a user