Employers working - onboarding to card print
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
class Employer < ApplicationRecord
|
||||
has_many :members
|
||||
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 :employer_card_logos, dependent: :destroy
|
||||
accepts_nested_attributes_for :employer_card_logos
|
||||
has_many :card_logo_files, through: :employer_card_logos
|
||||
has_one :employer_brand_logo, -> { where(logo_type: 'employer') },
|
||||
class_name: 'EmployerCardLogo',
|
||||
dependent: :destroy
|
||||
has_one :employer_logo, through: :employer_brand_logo, source: :card_logo_file
|
||||
|
||||
has_many :network_images, -> { where(logo_type: 'network') },
|
||||
class_name: 'EmployerCardLogo',
|
||||
dependent: :destroy
|
||||
has_many :network_logos, through: :network_images, source: :card_logo_file
|
||||
|
||||
belongs_to :card_provider, optional: true
|
||||
belongs_to :card_rx, optional: true
|
||||
|
||||
scope :active, -> { where(active: true) }
|
||||
scope :inactive, -> { where(active: false) }
|
||||
|
||||
|
||||
|
||||
# before_save :process_employer_logo
|
||||
# before_save :process_employer_logo, if: :employer_logo_filename_changed?
|
||||
before_save :create_slug, if: :new_record?
|
||||
after_save :process_employer_logo, if: :saved_change_to_employer_logo_filename?
|
||||
|
||||
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
|
||||
if self.employer_logo_filename.present? && self.employer_logo_filename.is_a?(String)
|
||||
image_file = CardLogoFile.find_by(filename: self.employer_logo_filename)
|
||||
if image_file.present?
|
||||
if self.employer_brand_logo.present?
|
||||
self.employer_brand_logo.update(card_logo_file: image_file)
|
||||
else
|
||||
self.create_employer_brand_logo(card_logo_file: image_file, logo_type: 'employer')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def create_slug
|
||||
self.slug = employer_trim_name(self.name).parameterize
|
||||
end
|
||||
|
||||
def name_to_logo_filename(extension)
|
||||
self.employer_trim_name(self.name).titleize.gsub(/\s+/, '').concat('Logo').concat(extension.downcase)
|
||||
end
|
||||
|
||||
def employer_trim_name(name)
|
||||
regex_source = Regexp.union(["health", "plan", "the", "inc", "llc"]).source
|
||||
case_insensitive_regex = Regexp.new(regex_source, "i")
|
||||
name.gsub(case_insensitive_regex, "").squish
|
||||
end
|
||||
|
||||
def self.permitted_params(params)
|
||||
params.require(:employer).permit(
|
||||
:name,
|
||||
:group_number,
|
||||
:pl_plan_key,
|
||||
:effective_date,
|
||||
:employer_logo_filename,
|
||||
:network_provider,
|
||||
:default_network_logo,
|
||||
:single_card_template,
|
||||
:card_provider_id,
|
||||
:card_rx_id,
|
||||
plans_attributes: [
|
||||
:id,
|
||||
:title,
|
||||
:pb_product_key,
|
||||
:_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.create!(
|
||||
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
|
||||
|
||||
def build_plan_with_default_benefits(attributes = {})
|
||||
plan = plans.new(attributes)
|
||||
benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence)
|
||||
benefits.each do |ben|
|
||||
plan.plan_benefits.new(benefit_desc: ben.benefit_desc, sequence: ben.sequence)
|
||||
end
|
||||
plan
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user