class Employer < ApplicationRecord has_many :members has_one :id_card_configuration, class_name: 'IdCard::Configuration', dependent: :destroy 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 id_card_enabled? self.id_card_configuration.present? end def claims_check_enabled? false end def name_to_logo_filename(extension) self.employer_trim_name(self.name).titleize.gsub(/[^a-zA-Z]/, '').concat('Logo').concat(extension.downcase) end def employer_trim_name(name = nil) employer_name = name.present? ? name : self.name regex_source = Regexp.union(["health ", "plan", "the", "inc", "llc"]).source case_insensitive_regex = Regexp.new(regex_source, "i") employer_name.gsub(case_insensitive_regex, "").gsub(/[^[:alpha:][:space:]]/, "").squish end def self.permitted_params(params) params.require(:employer).permit( :name, :slug, :group_number, :pl_plan_key, :effective_date ) 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