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 has_many :card_exceptions, dependent: :destroy accepts_nested_attributes_for :card_exceptions, allow_destroy: true, reject_if: :all_blank 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.pb_product_key, 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