107 lines
2.9 KiB
Ruby
107 lines
2.9 KiB
Ruby
class EmployerSetupProcess < ApplicationRecord
|
|
has_many :plans, dependent: :destroy
|
|
accepts_nested_attributes_for :plans, allow_destroy: true, reject_if: :all_blank
|
|
|
|
has_many :alternate_network_logos, dependent: :destroy
|
|
accepts_nested_attributes_for :alternate_network_logos, allow_destroy: true, reject_if: :all_blank
|
|
|
|
has_many :card_logo_files
|
|
|
|
# before_save :process_employer_logo
|
|
before_save :create_slug, if: :new_record?
|
|
|
|
def process_employer_logo
|
|
if self.employer_logo.present? && !self.employer_logo.is_a?(String)
|
|
self.card_logo_files.new(
|
|
filename: self.employer_logo.filename,
|
|
logo_type: 'employer',
|
|
image: self.employer_logo.data,
|
|
pl_plan_key: self.pl_plan_key || ""
|
|
)
|
|
end
|
|
end
|
|
|
|
def create_slug
|
|
self.slug = employer_trimmed_name.parameterize
|
|
end
|
|
|
|
def employer_name_to_logo_filename(extension)
|
|
self.employer_trimmed_name.titleize.gsub(/\s+/, '').concat('Logo').concat(extension.downcase)
|
|
end
|
|
|
|
def employer_trimmed_name
|
|
regex_source = Regexp.union(["health", "plan", "the", "inc", "llc"]).source
|
|
case_insensitive_regex = Regexp.new(regex_source, "i")
|
|
self.employer_name.gsub(case_insensitive_regex, "").squish
|
|
end
|
|
|
|
def self.permitted_params(params)
|
|
params.require(:employer_setup_process).permit(
|
|
:employer_name,
|
|
:group_number,
|
|
:pl_plan_key,
|
|
:effective_date,
|
|
:employer_logo,
|
|
:network_provider,
|
|
plans_attributes: [
|
|
:id,
|
|
:title,
|
|
:plan_id,
|
|
:_destroy,
|
|
plan_benefits_attributes: [
|
|
:id,
|
|
:benefit_desc,
|
|
:benefit,
|
|
:sequence,
|
|
:_destroy,
|
|
]
|
|
],
|
|
alternate_network_logos_attributes: [
|
|
:id,
|
|
:network_logo,
|
|
:exception_type,
|
|
:exception_value,
|
|
:_destroy
|
|
]
|
|
)
|
|
end
|
|
|
|
def save_to_prod
|
|
|
|
VhcsRecord.transaction do
|
|
Vhcs::HlPlanCode.create!(
|
|
group_number: self.group_number,
|
|
medical_number: self.group_number,
|
|
dental_number: '',
|
|
plan_key: self.pl_plan_key,
|
|
effect_date: self.effective_date
|
|
)
|
|
|
|
# Replace fairos_info with template like for benefits
|
|
fairos_info = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first
|
|
Vhcs::HlrxCrosRef.cdarreate!(
|
|
group_no: self.group_number,
|
|
rx_group_id: self.group_number,
|
|
help_desk: fairos_info.help_desk,
|
|
customer_service: fairos_info.customer_service,
|
|
web_url: fairos_info.web_url,
|
|
pl_plan_key: self.pl_plan_key
|
|
)
|
|
|
|
self.plans.each_with_index do |plan, i|
|
|
plan.plan_benefits.each do |bene|
|
|
Vhcs::HlEgglestonCardBenefit.create!(
|
|
plan_id: plan.plan_id,
|
|
benefit_desc: bene.benefit_desc,
|
|
benefit: bene.benefit,
|
|
sequence: bene.sequence,
|
|
plan_key: self.pl_plan_key
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
end
|