Employer table broken up and new idcard module setup
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
class EmployersController < ApplicationController
|
class EmployersController < ApplicationController
|
||||||
|
|
||||||
|
# View Methods
|
||||||
def index
|
def index
|
||||||
@employers = Employer.all
|
@employers = Employer.all
|
||||||
end
|
end
|
||||||
@@ -12,16 +14,6 @@ class EmployersController < ApplicationController
|
|||||||
render :new
|
render :new
|
||||||
end
|
end
|
||||||
|
|
||||||
def import
|
|
||||||
word_doc = params[:employer][:import_from_word]
|
|
||||||
if word_doc.present? && word_doc.is_a?(ActionDispatch::Http::UploadedFile)
|
|
||||||
@employer = BenefitsWordDocProcessor.new(word_doc.tempfile).call
|
|
||||||
else
|
|
||||||
@employer = Employer.new
|
|
||||||
end
|
|
||||||
render :new
|
|
||||||
end
|
|
||||||
|
|
||||||
# def import_old
|
# def import_old
|
||||||
# word_doc = params[:employer][:import_from_word]
|
# word_doc = params[:employer][:import_from_word]
|
||||||
# @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK")
|
# @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK")
|
||||||
@@ -74,6 +66,18 @@ class EmployersController < ApplicationController
|
|||||||
# redirect_to resources_url, notice: 'Resource was successfully destroyed.'
|
# redirect_to resources_url, notice: 'Resource was successfully destroyed.'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# API Methods
|
||||||
|
|
||||||
|
def import
|
||||||
|
word_doc = params[:employer][:import_from_word]
|
||||||
|
if word_doc.present? && word_doc.is_a?(ActionDispatch::Http::UploadedFile)
|
||||||
|
@employer = BenefitsWordDocProcessor.new(word_doc.tempfile).call
|
||||||
|
else
|
||||||
|
@employer = Employer.new
|
||||||
|
end
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
# def process_logos(employer_setup_process_params)
|
# def process_logos(employer_setup_process_params)
|
||||||
|
|||||||
@@ -1,56 +1,61 @@
|
|||||||
class IdCard::EmployerLogosController < ApplicationController
|
module IdCard
|
||||||
|
class EmployerLogosController < ApplicationController
|
||||||
|
|
||||||
def index
|
# View Methods
|
||||||
end
|
def index
|
||||||
|
|
||||||
def show
|
|
||||||
end
|
|
||||||
|
|
||||||
def image
|
|
||||||
logo_file = IdCard::EmployerLogo.find(params[:id])
|
|
||||||
puts params[:id]
|
|
||||||
logo_binary = logo_file.image_data
|
|
||||||
logo_filename = logo_file.filename
|
|
||||||
|
|
||||||
send_data logo_binary,
|
|
||||||
filename: logo_filename,
|
|
||||||
disposition: 'inline'
|
|
||||||
end
|
|
||||||
|
|
||||||
def new
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
file = card_logo_file_params["logo_file"]
|
|
||||||
if file.present? && file.is_a?(ActionDispatch::Http::UploadedFile)
|
|
||||||
filename = file.original_filename
|
|
||||||
# binary_data = file.read
|
|
||||||
binary_data = File.binread(file)
|
|
||||||
meme_type = Marcel::MimeType.for(file)
|
|
||||||
|
|
||||||
employerlogo = IdCard::EmployerLogo.create(
|
|
||||||
filename: filename,
|
|
||||||
image_data: binary_data,
|
|
||||||
content_type: meme_type
|
|
||||||
)
|
|
||||||
|
|
||||||
render json: employerlogo, only: [:id], status: :ok
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
file = logo_params["logo_file"]
|
||||||
|
if file.present? && file.is_a?(ActionDispatch::Http::UploadedFile)
|
||||||
|
filename = file.original_filename
|
||||||
|
# binary_data = file.read
|
||||||
|
binary_data = File.binread(file)
|
||||||
|
meme_type = Marcel::MimeType.for(file)
|
||||||
|
|
||||||
|
employerlogo = IdCard::EmployerLogo.create(
|
||||||
|
filename: filename,
|
||||||
|
image_data: binary_data,
|
||||||
|
content_type: meme_type
|
||||||
|
)
|
||||||
|
|
||||||
|
render json: employerlogo, only: [:id], status: :ok
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
# API Methods
|
||||||
|
|
||||||
|
def image
|
||||||
|
logo_file = IdCard::EmployerLogo.find(params[:id])
|
||||||
|
puts params[:id]
|
||||||
|
logo_binary = logo_file.image_data
|
||||||
|
logo_filename = logo_file.filename
|
||||||
|
|
||||||
|
send_data logo_binary,
|
||||||
|
filename: logo_filename,
|
||||||
|
disposition: 'inline'
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def logo_params
|
||||||
|
params.require(:id_card_employer_logo).permit(:logo_file)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def card_logo_file_params
|
|
||||||
params.require(:card_logo_file).permit(:logo_file, :logo_type)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -1,236 +1,242 @@
|
|||||||
class IdCard::SetupController < ApplicationController
|
module IdCard
|
||||||
|
class SetupController < ApplicationController
|
||||||
|
|
||||||
def new
|
# View Methods
|
||||||
@employer = Employer.find_by(slug: params[:employer])
|
def new
|
||||||
@setup = @employer.id_card_setup.new
|
@employer = Employer.find_by(slug: params[:employer])
|
||||||
render :new
|
@setup = @employer.create_id_card_setup
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
employer_params = Employer.permitted_params(params)
|
|
||||||
puts "---Params---"
|
|
||||||
puts employer_params
|
|
||||||
# post_image_processing_params = process_logos(employer_setup_process_params)
|
|
||||||
@employer = Employer.new(employer_params)
|
|
||||||
if @employer.save
|
|
||||||
# update_logos_with_employer_setup_information()
|
|
||||||
redirect_to employer_path(@employer.slug), notice: 'Employer Saved'
|
|
||||||
else
|
|
||||||
render :new
|
render :new
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
def edit
|
def create
|
||||||
@employer = Employer.find_by(slug: params[:id])
|
xyz
|
||||||
render :edit
|
employer_params = Employer.permitted_params(params)
|
||||||
end
|
puts "---Params---"
|
||||||
|
puts employer_params
|
||||||
def update
|
# post_image_processing_params = process_logos(employer_setup_process_params)
|
||||||
puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
@employer = Employer.new(employer_params)
|
||||||
employer_params = Employer.permitted_params(params)
|
if @employer.save
|
||||||
@employer = Employer.find(params[:id])
|
# update_logos_with_employer_setup_information()
|
||||||
|
redirect_to employer_path(@employer.slug), notice: 'Employer Saved'
|
||||||
if @employer.update(employer_params)
|
else
|
||||||
puts "sucess"
|
render :new
|
||||||
redirect_to employer_path(@employer.slug), notice: 'Employer was successfully updated.'
|
end
|
||||||
else
|
|
||||||
puts "fail"
|
|
||||||
render :edit, status: :unprocessable_entity
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@employer = Employer.find_by(slug: params[:id])
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
employer_params = Employer.permitted_params(params)
|
||||||
|
@employer = Employer.find(params[:id])
|
||||||
|
|
||||||
|
if @employer.update(employer_params)
|
||||||
|
puts "sucess"
|
||||||
|
redirect_to employer_path(@employer.slug), notice: 'Employer was successfully updated.'
|
||||||
|
else
|
||||||
|
puts "fail"
|
||||||
|
render :edit, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
# @resource = Resource.find(params[:id])
|
||||||
|
# @resource.destroy
|
||||||
|
# redirect_to resources_url, notice: 'Resource was successfully destroyed.'
|
||||||
|
end
|
||||||
|
|
||||||
|
# API Methods
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# def process_logos(employer_setup_process_params)
|
||||||
|
# @uploaded_logos = []
|
||||||
|
# employer_logo = employer_setup_process_params["employer_logo"]
|
||||||
|
# if employer_logo.present? && employer_logo.is_a?(ActionDispatch::Http::UploadedFile)
|
||||||
|
# filename = employer_logo.original_filename
|
||||||
|
# binary_data = employer_logo.read
|
||||||
|
# meme_type = Marcel::MimeType.for(employer_logo)
|
||||||
|
|
||||||
|
# CardLogoFile.create(
|
||||||
|
# filename: filename,
|
||||||
|
# image_data: binary_data,
|
||||||
|
# content_type: meme_type,
|
||||||
|
# logo_type: "employer"
|
||||||
|
# )
|
||||||
|
|
||||||
|
# @uploaded_logos.push(filename)
|
||||||
|
# employer_setup_process_params["employer_logo"] = filename
|
||||||
|
# end
|
||||||
|
|
||||||
|
# network_logos = employer_setup_process_params["alternate_network_logos_attributes"]
|
||||||
|
# if network_logos.present?
|
||||||
|
# network_logos.each do |alt|
|
||||||
|
|
||||||
|
# network_logo = alt.last["network_logo"]
|
||||||
|
# if network_logo.present? && network_logo.is_a?(ActionDispatch::Http::UploadedFile)
|
||||||
|
# filename = network_logo.original_filename
|
||||||
|
# binary_data = network_logo.read
|
||||||
|
# meme_type = Marcel::MimeType.for(network_logo)
|
||||||
|
|
||||||
|
# CardLogoFile.create(
|
||||||
|
# filename: filename,
|
||||||
|
# image_data: binary_data,
|
||||||
|
# content_type: meme_type,
|
||||||
|
# logo_type: "network"
|
||||||
|
# )
|
||||||
|
|
||||||
|
# @uploaded_logos.push(filename)
|
||||||
|
# end
|
||||||
|
# alt.last["network_logo"] = @uploaded_logos.last
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# employer_setup_process_params
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def update_logos_with_employer_setup_information()
|
||||||
|
# @uploaded_logos.each do |logo|
|
||||||
|
# logo_file = CardLogoFile.find_by(filename: logo)
|
||||||
|
# if logo_file.present? && @employer.present?
|
||||||
|
# logo_file.employer_setup_process = @employer
|
||||||
|
# logo_file.save
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def general_information_params
|
||||||
|
# params.require(:employer_setup_general_information_form).permit(
|
||||||
|
# :name,
|
||||||
|
# :employer_logo,
|
||||||
|
# :group_number,
|
||||||
|
# :dental,
|
||||||
|
# :pl_plan_key,
|
||||||
|
# :effect_date,
|
||||||
|
# :number_of_plans,
|
||||||
|
# :network,
|
||||||
|
# :number_of_additional_network_logos
|
||||||
|
# )
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def plans_params
|
||||||
|
# params.require(:employer_setup_plans_form).permit(
|
||||||
|
# plans: permited_plans_keys,
|
||||||
|
# benefit_descs: benefit_sequence_keys
|
||||||
|
# )
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def network_exceptions_params
|
||||||
|
# params.require(:employer_setup_network_exceptions_form).permit(
|
||||||
|
# network_exceptions: [:network_logo, exceptions: [:type, :value]],
|
||||||
|
# )
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def form_for_step
|
||||||
|
# step_name = @top_form.current_step
|
||||||
|
# form_method = "EmployerSetup#{step_name.camelize}Form".constantize
|
||||||
|
# # puts "/////\\\\\\||||||"
|
||||||
|
# # puts session[:employer_setup_data]
|
||||||
|
# # puts session[:employer_setup_data]['employer_setup_process_id']
|
||||||
|
# puts form_method
|
||||||
|
# form_method.new(session[:employer_setup_data]['employer_setup_process_id'])
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def process_step(step_name)
|
||||||
|
# @form_method = "EmployerSetup#{step_name.camelize}Form".constantize
|
||||||
|
# session_data_name = "#{step_name}_data"
|
||||||
|
# # puts "1--------------params----"
|
||||||
|
# # puts params
|
||||||
|
# # puts "8--------------session----"
|
||||||
|
# # puts session[:employer_setup_data]
|
||||||
|
# employer_setup_process_id = session[:employer_setup_data]['employer_setup_process_id']
|
||||||
|
# # puts session[:employer_setup_data]
|
||||||
|
# puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
# puts params
|
||||||
|
# @form = @form_method.new(employer_setup_process_id, params)
|
||||||
|
# if @form.pl_plan_key.blank?
|
||||||
|
# @form.pl_plan_key = session[:employer_setup_data]['pl_plan_key']
|
||||||
|
# end
|
||||||
|
# if @form.valid? && @form.save
|
||||||
|
# pl_plan_key = @top_form.pl_plan_key || @form.pl_plan_key
|
||||||
|
# # session[:employer_setup_data].merge!({current_step: step_name, pl_plan_key: pl_plan_key})
|
||||||
|
# # form_fields = @form.attributes.merge!(global_params(step_name))
|
||||||
|
# # session[:employer_setup_data][session_data_name] = form_fields
|
||||||
|
# # session[:employer_setup_data].merge!(global_params(step_name))
|
||||||
|
# # puts session[:employer_setup_data][session_data_name]
|
||||||
|
# true
|
||||||
|
# else
|
||||||
|
# false
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def step_params(step_name)
|
||||||
|
# form_name_sym = "employer_setup_#{step_name}_form".to_sym
|
||||||
|
# params.require(form_name_sym).permit(@form_method.permitted_params)
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def global_params(step_name)
|
||||||
|
# form_name_sym = "employer_setup_#{step_name}_form".to_sym
|
||||||
|
# params.require(form_name_sym).permit(EmployerSetupForm.permitted_params)
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def process_step(step_name)
|
||||||
|
# form_name = "employer_setup_#{step_name}_form".camelize.constantize
|
||||||
|
# form_params_name = "#{step_name}_params".to_sym
|
||||||
|
# allowed_params = [:general_information_params, :plans_params, :network_exceptions_params]
|
||||||
|
# if allowed_params.include?(form_params_name)
|
||||||
|
# form_params = send(form_params_name)
|
||||||
|
# @form = form_name.new(form_params)
|
||||||
|
# if @form.valid?
|
||||||
|
# session[:employer_setup_data]["#{step_name}_data"] = form_params
|
||||||
|
# true
|
||||||
|
# else
|
||||||
|
# false
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# false
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def employer_setup_params
|
||||||
|
# params.require(:employer_setup_form).permit(
|
||||||
|
# :current_step,
|
||||||
|
# :name,
|
||||||
|
# :employer_logo,
|
||||||
|
# :group_number,
|
||||||
|
# :pl_plan_key,
|
||||||
|
# :effect_date,
|
||||||
|
# :number_of_plans,
|
||||||
|
# :network,
|
||||||
|
# :number_of_additional_network_logos,
|
||||||
|
# network_exceptions: [:network_logo, exceptions: [:type, :value]],
|
||||||
|
# plans: permited_plans_keys,
|
||||||
|
# benefit_descs: benefit_sequence_keys
|
||||||
|
# )
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def benefit_sequence_keys
|
||||||
|
# (1..14).map { |i| i.to_s.to_sym }
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def permited_plans_keys
|
||||||
|
# benefit_sequence_keys.push(:plan_id)
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def plans_params
|
||||||
|
# plans_keys = params[:plans]&.keys || []
|
||||||
|
|
||||||
|
# plans_keys.each_with_object({}) do |key, hash|
|
||||||
|
# if key == 'benefit_descs' || key.match?(/^plan_\d$/)
|
||||||
|
# hash[key.to_sym] = permited_plan_param_list
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def permited_plan_param_list
|
||||||
|
# (1..14).map { |i| i.to_s.to_sym }.push(:plan_id)
|
||||||
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
|
||||||
# @resource = Resource.find(params[:id])
|
|
||||||
# @resource.destroy
|
|
||||||
# redirect_to resources_url, notice: 'Resource was successfully destroyed.'
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
# def process_logos(employer_setup_process_params)
|
|
||||||
# @uploaded_logos = []
|
|
||||||
# employer_logo = employer_setup_process_params["employer_logo"]
|
|
||||||
# if employer_logo.present? && employer_logo.is_a?(ActionDispatch::Http::UploadedFile)
|
|
||||||
# filename = employer_logo.original_filename
|
|
||||||
# binary_data = employer_logo.read
|
|
||||||
# meme_type = Marcel::MimeType.for(employer_logo)
|
|
||||||
|
|
||||||
# CardLogoFile.create(
|
|
||||||
# filename: filename,
|
|
||||||
# image_data: binary_data,
|
|
||||||
# content_type: meme_type,
|
|
||||||
# logo_type: "employer"
|
|
||||||
# )
|
|
||||||
|
|
||||||
# @uploaded_logos.push(filename)
|
|
||||||
# employer_setup_process_params["employer_logo"] = filename
|
|
||||||
# end
|
|
||||||
|
|
||||||
# network_logos = employer_setup_process_params["alternate_network_logos_attributes"]
|
|
||||||
# if network_logos.present?
|
|
||||||
# network_logos.each do |alt|
|
|
||||||
|
|
||||||
# network_logo = alt.last["network_logo"]
|
|
||||||
# if network_logo.present? && network_logo.is_a?(ActionDispatch::Http::UploadedFile)
|
|
||||||
# filename = network_logo.original_filename
|
|
||||||
# binary_data = network_logo.read
|
|
||||||
# meme_type = Marcel::MimeType.for(network_logo)
|
|
||||||
|
|
||||||
# CardLogoFile.create(
|
|
||||||
# filename: filename,
|
|
||||||
# image_data: binary_data,
|
|
||||||
# content_type: meme_type,
|
|
||||||
# logo_type: "network"
|
|
||||||
# )
|
|
||||||
|
|
||||||
# @uploaded_logos.push(filename)
|
|
||||||
# end
|
|
||||||
# alt.last["network_logo"] = @uploaded_logos.last
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# employer_setup_process_params
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def update_logos_with_employer_setup_information()
|
|
||||||
# @uploaded_logos.each do |logo|
|
|
||||||
# logo_file = CardLogoFile.find_by(filename: logo)
|
|
||||||
# if logo_file.present? && @employer.present?
|
|
||||||
# logo_file.employer_setup_process = @employer
|
|
||||||
# logo_file.save
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def general_information_params
|
|
||||||
# params.require(:employer_setup_general_information_form).permit(
|
|
||||||
# :name,
|
|
||||||
# :employer_logo,
|
|
||||||
# :group_number,
|
|
||||||
# :dental,
|
|
||||||
# :pl_plan_key,
|
|
||||||
# :effect_date,
|
|
||||||
# :number_of_plans,
|
|
||||||
# :network,
|
|
||||||
# :number_of_additional_network_logos
|
|
||||||
# )
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def plans_params
|
|
||||||
# params.require(:employer_setup_plans_form).permit(
|
|
||||||
# plans: permited_plans_keys,
|
|
||||||
# benefit_descs: benefit_sequence_keys
|
|
||||||
# )
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def network_exceptions_params
|
|
||||||
# params.require(:employer_setup_network_exceptions_form).permit(
|
|
||||||
# network_exceptions: [:network_logo, exceptions: [:type, :value]],
|
|
||||||
# )
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def form_for_step
|
|
||||||
# step_name = @top_form.current_step
|
|
||||||
# form_method = "EmployerSetup#{step_name.camelize}Form".constantize
|
|
||||||
# # puts "/////\\\\\\||||||"
|
|
||||||
# # puts session[:employer_setup_data]
|
|
||||||
# # puts session[:employer_setup_data]['employer_setup_process_id']
|
|
||||||
# puts form_method
|
|
||||||
# form_method.new(session[:employer_setup_data]['employer_setup_process_id'])
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def process_step(step_name)
|
|
||||||
# @form_method = "EmployerSetup#{step_name.camelize}Form".constantize
|
|
||||||
# session_data_name = "#{step_name}_data"
|
|
||||||
# # puts "1--------------params----"
|
|
||||||
# # puts params
|
|
||||||
# # puts "8--------------session----"
|
|
||||||
# # puts session[:employer_setup_data]
|
|
||||||
# employer_setup_process_id = session[:employer_setup_data]['employer_setup_process_id']
|
|
||||||
# # puts session[:employer_setup_data]
|
|
||||||
# puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
|
||||||
# puts params
|
|
||||||
# @form = @form_method.new(employer_setup_process_id, params)
|
|
||||||
# if @form.pl_plan_key.blank?
|
|
||||||
# @form.pl_plan_key = session[:employer_setup_data]['pl_plan_key']
|
|
||||||
# end
|
|
||||||
# if @form.valid? && @form.save
|
|
||||||
# pl_plan_key = @top_form.pl_plan_key || @form.pl_plan_key
|
|
||||||
# # session[:employer_setup_data].merge!({current_step: step_name, pl_plan_key: pl_plan_key})
|
|
||||||
# # form_fields = @form.attributes.merge!(global_params(step_name))
|
|
||||||
# # session[:employer_setup_data][session_data_name] = form_fields
|
|
||||||
# # session[:employer_setup_data].merge!(global_params(step_name))
|
|
||||||
# # puts session[:employer_setup_data][session_data_name]
|
|
||||||
# true
|
|
||||||
# else
|
|
||||||
# false
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def step_params(step_name)
|
|
||||||
# form_name_sym = "employer_setup_#{step_name}_form".to_sym
|
|
||||||
# params.require(form_name_sym).permit(@form_method.permitted_params)
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def global_params(step_name)
|
|
||||||
# form_name_sym = "employer_setup_#{step_name}_form".to_sym
|
|
||||||
# params.require(form_name_sym).permit(EmployerSetupForm.permitted_params)
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def process_step(step_name)
|
|
||||||
# form_name = "employer_setup_#{step_name}_form".camelize.constantize
|
|
||||||
# form_params_name = "#{step_name}_params".to_sym
|
|
||||||
# allowed_params = [:general_information_params, :plans_params, :network_exceptions_params]
|
|
||||||
# if allowed_params.include?(form_params_name)
|
|
||||||
# form_params = send(form_params_name)
|
|
||||||
# @form = form_name.new(form_params)
|
|
||||||
# if @form.valid?
|
|
||||||
# session[:employer_setup_data]["#{step_name}_data"] = form_params
|
|
||||||
# true
|
|
||||||
# else
|
|
||||||
# false
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# false
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def employer_setup_params
|
|
||||||
# params.require(:employer_setup_form).permit(
|
|
||||||
# :current_step,
|
|
||||||
# :name,
|
|
||||||
# :employer_logo,
|
|
||||||
# :group_number,
|
|
||||||
# :pl_plan_key,
|
|
||||||
# :effect_date,
|
|
||||||
# :number_of_plans,
|
|
||||||
# :network,
|
|
||||||
# :number_of_additional_network_logos,
|
|
||||||
# network_exceptions: [:network_logo, exceptions: [:type, :value]],
|
|
||||||
# plans: permited_plans_keys,
|
|
||||||
# benefit_descs: benefit_sequence_keys
|
|
||||||
# )
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def benefit_sequence_keys
|
|
||||||
# (1..14).map { |i| i.to_s.to_sym }
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def permited_plans_keys
|
|
||||||
# benefit_sequence_keys.push(:plan_id)
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def plans_params
|
|
||||||
# plans_keys = params[:plans]&.keys || []
|
|
||||||
|
|
||||||
# plans_keys.each_with_object({}) do |key, hash|
|
|
||||||
# if key == 'benefit_descs' || key.match?(/^plan_\d$/)
|
|
||||||
# hash[key.to_sym] = permited_plan_param_list
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def permited_plan_param_list
|
|
||||||
# (1..14).map { |i| i.to_s.to_sym }.push(:plan_id)
|
|
||||||
# end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,43 +1,43 @@
|
|||||||
import { Controller } from "@hotwired/stimulus"
|
import { Controller } from "@hotwired/stimulus"
|
||||||
|
|
||||||
export default class extends Controller {
|
export default class extends Controller {
|
||||||
static targets = ["dependentField"]
|
static targets = ["dependentField"]
|
||||||
|
|
||||||
connect() {
|
connect() {
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleFields() {
|
toggleFields() {
|
||||||
console.log("--- in toggle --- ")
|
console.log("--- in toggle --- ")
|
||||||
const selector = this.element.querySelector('[data-action*="change->general-form#toggleFields"]');
|
const selector = this.element.querySelector('[data-action*="change->general-form#toggleFields"]');
|
||||||
if (selector) {
|
if (selector) {
|
||||||
const selectedValue = selector.value
|
const selectedValue = selector.value
|
||||||
this.field_match = false;
|
this.field_match = false;
|
||||||
this.dependentFieldTargets.forEach((field) => {
|
this.dependentFieldTargets.forEach((field) => {
|
||||||
// Check a data attribute on the field to see if it matches the selected value
|
// Check a data attribute on the field to see if it matches the selected value
|
||||||
if (field.dataset.parentValue === selectedValue) {
|
if (field.dataset.parentValue === selectedValue) {
|
||||||
if (selectedValue == "network_logo") {
|
if (selectedValue == "network_logo") {
|
||||||
field.parentElement.parentElement.classList.remove("hidden");
|
field.parentElement.parentElement.classList.remove("hidden");
|
||||||
} else {
|
} else {
|
||||||
field.parentElement.classList.remove("hidden");
|
field.parentElement.classList.remove("hidden");
|
||||||
}
|
}
|
||||||
this.field_match = true;
|
this.field_match = true;
|
||||||
console.log("- ", selectedValue)
|
console.log("- ", selectedValue)
|
||||||
console.log("-- ", this.field_match)
|
console.log("-- ", this.field_match)
|
||||||
} else {
|
} else {
|
||||||
if (field.dataset.parentValue == "network_logo") {
|
if (field.dataset.parentValue == "network_logo") {
|
||||||
field.parentElement.parentElement.classList.add("hidden");
|
field.parentElement.parentElement.classList.add("hidden");
|
||||||
} else {
|
} else {
|
||||||
field.parentElement.classList.add("hidden");
|
field.parentElement.classList.add("hidden");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (!this.field_match) {
|
if (!this.field_match) {
|
||||||
console.log("--- ", this.field_match)
|
console.log("--- ", this.field_match)
|
||||||
const defaultOption = this.dependentFieldTargets.find(target => {
|
const defaultOption = this.dependentFieldTargets.find(target => {
|
||||||
return target.dataset.parentValue === 'default';
|
return target.dataset.parentValue === 'default';
|
||||||
});
|
});
|
||||||
defaultOption.parentElement.classList.remove("hidden");
|
defaultOption.parentElement.classList.remove("hidden");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
import { Controller } from "@hotwired/stimulus"
|
import { Controller } from "@hotwired/stimulus"
|
||||||
|
|
||||||
export default class extends Controller {
|
export default class extends Controller {
|
||||||
static targets = [ "name", "output" ]
|
static targets = [ "name", "output" ]
|
||||||
|
|
||||||
connect() {
|
connect() {
|
||||||
// this.element.textContent = "Hello World!"
|
// this.element.textContent = "Hello World!"
|
||||||
console.log('Hello World hello_controller.js');
|
console.log('Hello World hello_controller.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
greet() {
|
greet() {
|
||||||
console.log('greet');
|
console.log('greet');
|
||||||
this.outputTarget.textContent =
|
this.outputTarget.textContent =
|
||||||
`Hello, ${this.nameTarget.value}!`
|
`Hello, ${this.nameTarget.value}!`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ export default class extends Controller {
|
|||||||
static values = {
|
static values = {
|
||||||
logoType: String,
|
logoType: String,
|
||||||
employerName: String
|
employerName: String
|
||||||
}
|
}
|
||||||
static targets = ["preview", "previewContainer", "logoSelect", "logofield", "initialLogoFile"];
|
static targets = ["preview", "previewContainer", "logoSelect", "logoField", "initialLogoFile"];
|
||||||
|
|
||||||
async connect() {
|
async connect() {
|
||||||
console.log('in connect');
|
console.log('in connect');
|
||||||
const initValue = this.logofieldTarget.value
|
const initValue = this.logoFieldTarget.value
|
||||||
console.log(initValue)
|
console.log(initValue)
|
||||||
if (initValue) {
|
if (initValue) {
|
||||||
const response = await fetch(`/id_card/${this.logoTypeValue}_logos/${initValue}/image`); // Fetch the binary data
|
const response = await fetch(`/id_card/${this.logoTypeValue}_logos/${initValue}/image`); // Fetch the binary data
|
||||||
@@ -25,41 +25,49 @@ export default class extends Controller {
|
|||||||
uploadLogo(event) {
|
uploadLogo(event) {
|
||||||
console.log('in uploadLogo');
|
console.log('in uploadLogo');
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
const file = event.target.files[0];
|
let logoFile = event.target.files[0];
|
||||||
if (!file) return;
|
if (!logoFile) return;
|
||||||
|
|
||||||
const logoType = this.logoTypeValue
|
const logoType = this.logoTypeValue
|
||||||
|
|
||||||
let newFileName = file.name
|
let newFileName = logoFile.name
|
||||||
if (logoType == "network") {
|
if (logoType == "network") {
|
||||||
console.log("n " + newFileName);
|
console.log("n " + newFileName);
|
||||||
newFileName = this.determineNetworkFilename(file)
|
newFileName = this.determineNetworkFilename(logoFile)
|
||||||
this.addOptionToSelect(newFileName)
|
this.addOptionToSelect(newFileName)
|
||||||
|
logoFile = new File([logoFile], newFileName)
|
||||||
} else if (logoType == "employer") {
|
} else if (logoType == "employer") {
|
||||||
newFileName = this.determineEmployerFilename(file)
|
newFileName = this.determineEmployerFilename(logoFile)
|
||||||
file.name = newFileName
|
logoFile = new File([logoFile], newFileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.previewFile(file);
|
this.uploadLogoToServer(logoFile)
|
||||||
this.uploadLogoToServer(file);
|
.then((result) => {
|
||||||
|
console.log(result);
|
||||||
this.logofieldTarget.value = newFileName;
|
const logoId = result.id
|
||||||
|
this.previewFile(logoFile);
|
||||||
|
this.logoFieldTarget.value = logoId;
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
// Handle any errors that occurred
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
previewFile(file) {
|
previewFile(logoFile) {
|
||||||
console.log('in previewFile');
|
console.log('in previewFile');
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
reader.onload = (e) => {
|
reader.onload = (e) => {
|
||||||
this.previewTarget.src = e.target.result;
|
this.previewTarget.src = e.target.result;
|
||||||
this.previewContainerTarget.classList.remove("hidden");
|
this.previewContainerTarget.classList.remove("hidden");
|
||||||
};
|
};
|
||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(logoFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
async uploadLogoToServer(file) {
|
async uploadLogoToServer(logoFile) {
|
||||||
console.log('in uploadLogoToServer');
|
console.log('in uploadLogoToServer');
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append(`id_card_${this.logoTypeValue}_logo[logo_file]`, file);
|
formData.append(`id_card_${this.logoTypeValue}_logo[logo_file]`, logoFile);
|
||||||
|
|
||||||
const csrfToken = document.querySelector("meta[name='csrf-token']").content;
|
const csrfToken = document.querySelector("meta[name='csrf-token']").content;
|
||||||
|
|
||||||
@@ -74,11 +82,14 @@ export default class extends Controller {
|
|||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
console.log('Upload successful!')
|
console.log('Upload successful!')
|
||||||
|
const data = await response.json();
|
||||||
|
return data;
|
||||||
} else {
|
} else {
|
||||||
console.error("Failed to track event.");
|
throw new Error(`HTTP error! status: ${response.status}`);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Network error:", error);
|
console.error("Network error:", error);
|
||||||
|
throw new Error("Network error:", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,17 +97,17 @@ export default class extends Controller {
|
|||||||
const blankOptionIndex = 0;
|
const blankOptionIndex = 0;
|
||||||
const newOption = new Option(name, name, true, true)
|
const newOption = new Option(name, name, true, true)
|
||||||
|
|
||||||
if (this.logofieldTarget.options.length > blankOptionIndex + 1) {
|
if (this.logoFieldTarget.options.length > blankOptionIndex + 1) {
|
||||||
this.logofieldTarget.insertBefore(newOption, this.logofieldTarget.options[blankOptionIndex + 1]);
|
this.logoFieldTarget.insertBefore(newOption, this.logoFieldTarget.options[blankOptionIndex + 1]);
|
||||||
} else {
|
} else {
|
||||||
this.logofieldTarget.appendChild(newOption);
|
this.logoFieldTarget.appendChild(newOption);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.logofieldTarget.value = name;
|
this.logoFieldTarget.value = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
determineNetworkFilename(file) {
|
determineNetworkFilename(logoFile) {
|
||||||
const fileExtension = file.name.split('.').pop();
|
const fileExtension = logoFile.name.split('.').pop();
|
||||||
const primaryNetworkName = prompt("Enter the name for the primary network (Usually 'Cigna' or 'MedCost':");
|
const primaryNetworkName = prompt("Enter the name for the primary network (Usually 'Cigna' or 'MedCost':");
|
||||||
const secondaryNetworkName = prompt("Enter the name for the primary network (ex: Health Partners):");
|
const secondaryNetworkName = prompt("Enter the name for the primary network (ex: Health Partners):");
|
||||||
const logoFilename = this.titleizeText(primaryNetworkName).concat(this.titleizeText(secondaryNetworkName)).concat("Logo.").concat(fileExtension).replaceAll(' ', '');
|
const logoFilename = this.titleizeText(primaryNetworkName).concat(this.titleizeText(secondaryNetworkName)).concat("Logo.").concat(fileExtension).replaceAll(' ', '');
|
||||||
@@ -104,8 +115,8 @@ export default class extends Controller {
|
|||||||
return logoFilename
|
return logoFilename
|
||||||
}
|
}
|
||||||
|
|
||||||
determineEmployerFilename(file) {
|
determineEmployerFilename(logoFile) {
|
||||||
const fileExtension = file.name.split('.').pop();
|
const fileExtension = logoFile.name.split('.').pop();
|
||||||
const employerName = this.employerNameValue
|
const employerName = this.employerNameValue
|
||||||
const logoFilename = this.titleizeText(employerName).concat("Logo.").concat(fileExtension).replaceAll(' ', '');
|
const logoFilename = this.titleizeText(employerName).concat("Logo.").concat(fileExtension).replaceAll(' ', '');
|
||||||
|
|
||||||
@@ -120,3 +131,4 @@ export default class extends Controller {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
class Employer < ApplicationRecord
|
class Employer < ApplicationRecord
|
||||||
has_many :members
|
has_many :members
|
||||||
has_one :id_card_setup, class_name: 'IdCard::Setup'
|
has_one :id_card_setup, class_name: 'IdCard::Setup', dependent: :destroy
|
||||||
|
|
||||||
scope :active, -> { where(active: true) }
|
scope :active, -> { where(active: true) }
|
||||||
scope :inactive, -> { where(active: false) }
|
scope :inactive, -> { where(active: false) }
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
class IdCard::EmployerLogo < ApplicationRecord
|
module IdCard
|
||||||
before_save :calculate_aspect_ratio, if: :image_data_changed?
|
class EmployerLogo < ApplicationRecord
|
||||||
|
before_save :calculate_aspect_ratio, if: :image_data_changed?
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def calculate_aspect_ratio
|
def calculate_aspect_ratio
|
||||||
image_io = StringIO.new(self.image_data)
|
image_io = StringIO.new(self.image_data)
|
||||||
width, height = FastImage.size(image_io)
|
width, height = FastImage.size(image_io)
|
||||||
image_ratio = width.to_f / height
|
image_ratio = width.to_f / height
|
||||||
if image_ratio
|
if image_ratio
|
||||||
self.aspect_ratio = image_ratio.round(2)
|
self.aspect_ratio = image_ratio.round(2)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
class IdCard::Exception < ApplicationRecord
|
module IdCard
|
||||||
belongs_to :id_card_setup
|
class Exception < ApplicationRecord
|
||||||
has_many :id_card_exception_items
|
belongs_to :setup
|
||||||
accepts_nested_attributes_for :id_card_exception_items, allow_destroy: true, reject_if: :all_blank
|
has_many :exception_items
|
||||||
|
accepts_nested_attributes_for :exception_items, allow_destroy: true, reject_if: :all_blank
|
||||||
|
|
||||||
VALID_TYPES = ['zipcode', 'state', 'family_id']
|
VALID_TYPES = ['zipcode', 'state', 'family_id']
|
||||||
|
|
||||||
validates :type, inclusion: { in: VALID_TYPES,
|
validates :type, inclusion: { in: VALID_TYPES,
|
||||||
message: "%{value} is not a valid exception type" }
|
message: "%{value} is not a valid exception type" }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,25 +1,27 @@
|
|||||||
class IdCard::ExceptionItem < ApplicationRecord
|
module IdCard
|
||||||
belongs_to :id_card_exception
|
class ExceptionItem < ApplicationRecord
|
||||||
belongs_to :id_card_network_logo, optional: true
|
belongs_to :exception
|
||||||
belongs_to :id_card_provider_section, optional: true
|
belongs_to :network_logo, optional: true
|
||||||
|
belongs_to :provider_section, optional: true
|
||||||
|
|
||||||
validate :only_one_exception_field_present
|
validate :only_one_exception_field_present
|
||||||
|
|
||||||
FIELDS_TO_VALIDATE = [:field_value, :card_logo_file_id, :card_provider_id].freeze
|
FIELDS_TO_VALIDATE = [:field_value, :card_logo_file_id, :card_provider_id].freeze
|
||||||
|
|
||||||
VALID_FIELD_NAMES = ['network_logo', 'provider_section', 'effective_date']
|
VALID_FIELD_NAMES = ['network_logo', 'provider_section', 'effective_date']
|
||||||
|
|
||||||
validates :field_name, inclusion: { in: VALID_FIELD_NAMES,
|
validates :field_name, inclusion: { in: VALID_FIELD_NAMES,
|
||||||
message: "%{value} is not a valid Id Card Field Name" }
|
message: "%{value} is not a valid Id Card Field Name" }
|
||||||
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def only_one_exception_field_present
|
def only_one_exception_field_present
|
||||||
present_fields = FIELDS_TO_VALIDATE.count { |field| self[field].present? }
|
present_fields = FIELDS_TO_VALIDATE.count { |field| self[field].present? }
|
||||||
|
|
||||||
if present_fields != 1
|
if present_fields != 1
|
||||||
errors.add(:base, "Only one exception field can be present at a time")
|
errors.add(:base, "Only one exception field can be present at a time")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
class IdCard::NetworkLogo < ApplicationRecord
|
module IdCard
|
||||||
before_save :round_aspect_ratio
|
class NetworkLogo < ApplicationRecord
|
||||||
|
before_save :round_aspect_ratio
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def round_aspect_ratio
|
def round_aspect_ratio
|
||||||
if self.aspect_ratio.present?
|
if self.aspect_ratio.present?
|
||||||
self.aspect_ratio = self.aspect_ratio.round(2)
|
self.aspect_ratio = self.aspect_ratio.round(2)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+26
-24
@@ -1,33 +1,35 @@
|
|||||||
class IdCard::Plan < ApplicationRecord
|
module IdCard
|
||||||
belongs_to :id_card_setup
|
class Plan < ApplicationRecord
|
||||||
has_many :id_card_plan_benefits, dependent: :destroy
|
belongs_to :setup
|
||||||
accepts_nested_attributes_for :id_card_plan_benefits, allow_destroy: true, reject_if: :all_blank
|
has_many :plan_benefits, dependent: :destroy
|
||||||
|
accepts_nested_attributes_for :plan_benefits, allow_destroy: true, reject_if: :all_blank
|
||||||
|
|
||||||
# after_initialize :create_default_benefits, if: :new_record?
|
# after_initialize :create_default_benefits, if: :new_record?
|
||||||
|
|
||||||
|
|
||||||
def self.permitted_params(params)
|
def self.permitted_params(params)
|
||||||
params.require(:id_card_plan).permit(
|
params.require(:id_card_plan).permit(
|
||||||
:title,
|
:title,
|
||||||
:pb_product_key,
|
:pb_product_key,
|
||||||
:pl_plan_key,
|
:pl_plan_key,
|
||||||
:_destroy,
|
|
||||||
id_card_plan_benefits_attributes: [
|
|
||||||
:id,
|
|
||||||
:benefit_desc,
|
|
||||||
:benefit,
|
|
||||||
:sequence,
|
|
||||||
:_destroy,
|
:_destroy,
|
||||||
]
|
id_card_plan_benefits_attributes: [
|
||||||
)
|
:id,
|
||||||
end
|
:benefit_desc,
|
||||||
|
:benefit,
|
||||||
|
:sequence,
|
||||||
|
:_destroy,
|
||||||
|
]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def build_and_create_default_benefits
|
def build_and_create_default_benefits
|
||||||
benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence)
|
benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence)
|
||||||
benefits.each do |ben|
|
benefits.each do |ben|
|
||||||
id_card_plan_benefits.new(benefit_desc: ben.benefit_desc, sequence: ben.sequence)
|
id_card_plan_benefits.new(benefit_desc: ben.benefit_desc, sequence: ben.sequence)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
class IdCard::PlanBenefit < ApplicationRecord
|
module IdCard
|
||||||
belongs_to :id_card_plan
|
class PlanBenefit < ApplicationRecord
|
||||||
end
|
belongs_to :plan
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,14 +1,15 @@
|
|||||||
class IdCard::PrintData < ApplicationRecord
|
module IdCard
|
||||||
|
class PrintData < ApplicationRecord
|
||||||
|
|
||||||
STRING_ATTRIBUTES = %w[provider_line_1 provider_line_2 provider_line_3 provider_line_4 provider_line_5 provider_line_6 provider_line_7 provider_line_8 provider_line_9 provider_line_10 provider_line_11 claim_to_1 claim_to_2 claim_to_3 claim_to_4 claim_to_5 claim_to_6 claim_to_7 claim_to_8 claim_to_9 claim_to_10 claim_to_11 dependent_1 dependent_2 dependent_3 dependent_4 dependent_5 dependent_6 dependent_7 dependent_8]
|
STRING_ATTRIBUTES = %w[provider_line_1 provider_line_2 provider_line_3 provider_line_4 provider_line_5 provider_line_6 provider_line_7 provider_line_8 provider_line_9 provider_line_10 provider_line_11 claim_to_1 claim_to_2 claim_to_3 claim_to_4 claim_to_5 claim_to_6 claim_to_7 claim_to_8 claim_to_9 claim_to_10 claim_to_11 dependent_1 dependent_2 dependent_3 dependent_4 dependent_5 dependent_6 dependent_7 dependent_8]
|
||||||
|
|
||||||
before_validation :assign_blank_strings_to_unassigned_params
|
before_validation :assign_blank_strings_to_unassigned_params
|
||||||
|
|
||||||
def assign_blank_strings_to_unassigned_params
|
def assign_blank_strings_to_unassigned_params
|
||||||
STRING_ATTRIBUTES.each do |attr|
|
STRING_ATTRIBUTES.each do |attr|
|
||||||
# Use the blank? method which checks for nil, false, empty, or whitespace strings
|
# Use the blank? method which checks for nil, false, empty, or whitespace strings
|
||||||
self[attr] = "" if self[attr].blank?
|
self[attr] = "" if self[attr].blank?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
class IdCard::ProviderSection < ApplicationRecord
|
module IdCard
|
||||||
|
class ProviderSection < ApplicationRecord
|
||||||
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
class IdCard::RxSection < ApplicationRecord
|
module IdCard
|
||||||
|
class RxSection < ApplicationRecord
|
||||||
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
+25
-21
@@ -1,27 +1,31 @@
|
|||||||
class IdCard::Setup < ApplicationRecord
|
module IdCard
|
||||||
belongs_to :employer
|
class Setup < ApplicationRecord
|
||||||
belongs_to :id_card_employer_logo
|
belongs_to :employer, class_name: 'Employer'
|
||||||
belongs_to :id_card_network_logo
|
belongs_to :employer_logo, optional: true
|
||||||
belongs_to :id_card_provider_section
|
belongs_to :network_logo, optional: true
|
||||||
belongs_to :id_card_rx_section
|
belongs_to :provider_section, optional: true
|
||||||
|
belongs_to :rx_section, optional: true
|
||||||
|
|
||||||
has_many :card_exceptions, dependent: :destroy
|
has_many :plans, dependent: :destroy
|
||||||
|
|
||||||
# def employer_logo_filename
|
has_many :exceptions, dependent: :destroy
|
||||||
# self.id_card_employer_logo.filename
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def network_logo_filename
|
# def employer_logo_filename
|
||||||
# self.id_card_network_logo.filename
|
# self.employer_logo.filename
|
||||||
# end
|
# end
|
||||||
|
|
||||||
def self.permitted_params(params)
|
# def network_logo_filename
|
||||||
params.require(:id_card_setup).permit(
|
# self.network_logo.filename
|
||||||
:print_name,
|
# end
|
||||||
:network_provider,
|
|
||||||
:card_template,
|
def self.permitted_params(params)
|
||||||
:rx_group_number,
|
params.require(:id_card_setup).permit(
|
||||||
:id_card_employer_logo_id
|
:print_name,
|
||||||
)
|
:network_provider,
|
||||||
|
:card_template,
|
||||||
|
:rx_group_number,
|
||||||
|
:id_card_employer_logo_id
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
class CallStoredProc
|
class CallStoredProc
|
||||||
def initialize(procedure_name, args = {})
|
def initialize(procedure_name, args = {})
|
||||||
@procedure_name = procedure_name
|
@procedure_name = procedure_name
|
||||||
@args = args
|
@args = args
|
||||||
end
|
end
|
||||||
|
|
||||||
def call
|
def call
|
||||||
params_sql = @args.map { |key, value| "@#{key} = :#{key}" }.join(', ')
|
params_sql = @args.map { |key, value| "@#{key} = :#{key}" }.join(', ')
|
||||||
sql_template = "EXEC #{@procedure_name} #{params_sql}"
|
sql_template = "EXEC #{@procedure_name} #{params_sql}"
|
||||||
sanitized_sql = VhcsRecord.send(:sanitize_sql_array, [sql_template, @args])
|
sanitized_sql = VhcsRecord.send(:sanitize_sql_array, [sql_template, @args])
|
||||||
|
|
||||||
VhcsRecord.connection.exec_query(sanitized_sql)
|
VhcsRecord.connection.exec_query(sanitized_sql)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,13 +15,17 @@ module BenefitsWordDoc
|
|||||||
plan_lines = @word_doc_section.slice(plan_index + 1, 14)
|
plan_lines = @word_doc_section.slice(plan_index + 1, 14)
|
||||||
plan_lines.each_with_index do |line, i|
|
plan_lines.each_with_index do |line, i|
|
||||||
field_mapping = mapping_array[i]
|
field_mapping = mapping_array[i]
|
||||||
field_regex = field_mapping[:doc_to_employer_regex]
|
if line.match(/:.*/)
|
||||||
if line.match(field_regex)
|
field_value = line.match(/:.*/)[0].strip
|
||||||
field_value = line.match(field_regex)[0].strip
|
|
||||||
elsif line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field]))
|
|
||||||
field_value = line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field]))[0].strip
|
|
||||||
else
|
else
|
||||||
field_value = line
|
field_regex = field_mapping[:doc_to_employer_regex]
|
||||||
|
if line.match(field_regex)
|
||||||
|
field_value = line.match(field_regex)[0].strip
|
||||||
|
elsif line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field]))
|
||||||
|
field_value = line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field]))[0].strip
|
||||||
|
else
|
||||||
|
field_value = line
|
||||||
|
end
|
||||||
end
|
end
|
||||||
employer_benefit_desc_field = field_mapping[:employer_benefit_desc_field]
|
employer_benefit_desc_field = field_mapping[:employer_benefit_desc_field]
|
||||||
new_benefit = new_plan.plan_benefits[i]
|
new_benefit = new_plan.plan_benefits[i]
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class ImageProcessor
|
|||||||
filename: filename,
|
filename: filename,
|
||||||
image_data: binary_data,
|
image_data: binary_data,
|
||||||
content_type: meme_type,
|
content_type: meme_type,
|
||||||
logo_type: "network"
|
logo_type: "employer"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -23,7 +23,7 @@ module SampleCard
|
|||||||
def set_employer_fields
|
def set_employer_fields
|
||||||
selected_attributes = {
|
selected_attributes = {
|
||||||
employer_name: @employer.name,
|
employer_name: @employer.name,
|
||||||
group_number: @employer.group_number || "999999",
|
group_number: @employer.group_number.present? ? @employer.group_number : "999999",
|
||||||
medical_eff_date: @employer.effective_date
|
medical_eff_date: @employer.effective_date
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ module SampleCard
|
|||||||
selected_attributes = {
|
selected_attributes = {
|
||||||
full_name: "JANE DOE",
|
full_name: "JANE DOE",
|
||||||
primary_mb_member_key: "888888",
|
primary_mb_member_key: "888888",
|
||||||
rx_group: @employer.group_number || "999999"
|
rx_group: @employer.group_number.present? ? @employer.group_number : "999999"
|
||||||
}
|
}
|
||||||
|
|
||||||
@sample_card.assign_attributes(selected_attributes)
|
@sample_card.assign_attributes(selected_attributes)
|
||||||
|
|||||||
@@ -1,32 +1,32 @@
|
|||||||
<div class="flex space-x-5 items-center mt-4">
|
<div class="flex space-x-5 items-center mt-4">
|
||||||
<div class="flex flex-col items-start w-full">
|
<div class="flex flex-col items-start w-full">
|
||||||
<div class="flex items-end w-full">
|
<div class="flex items-end w-full">
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<%= f.select :network_logo, options_for_select(CardLogoFile.where(logo_type: 'network').pluck(:filename).map { |fn| [fn, fn]}), { include_blank: "Select or Add Network Logo", class: "rounded-r-none" }, { data: { logo_upload_target: "logoSelect" }} %>
|
<%= f.select :network_logo, options_for_select(CardLogoFile.where(logo_type: 'network').pluck(:filename).map { |fn| [fn, fn]}), { include_blank: "Select or Add Network Logo", class: "rounded-r-none" }, { data: { logo_upload_target: "logoSelect" }} %>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center justify-center cursor-pointer bg-NEXT_COLOR hover:bg-deepcove border-2 border-NEXT_COLOR text-platinum font-bold px-3 rounded-r h-10 transition duration-100">
|
<div class="flex items-center justify-center cursor-pointer bg-NEXT_COLOR hover:bg-deepcove border-2 border-NEXT_COLOR text-platinum font-bold px-3 rounded-r h-10 transition duration-100">
|
||||||
<label for="file_upload_input_NEW_RECORD" class="text-center cursor-pointer">
|
<label for="file_upload_input_NEW_RECORD" class="text-center cursor-pointer">
|
||||||
<%= icon "image-plus", library: "lucide" %>
|
<%= icon "image-plus", library: "lucide" %>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden flex justify-center ml-4 rounded-lg border-4 border-NEXT_COLOR" data-logo-upload-target="previewContainer">
|
<div class="hidden flex justify-center ml-4 rounded-lg border-4 border-NEXT_COLOR" data-logo-upload-target="previewContainer">
|
||||||
<img data-logo-upload-target="preview" src="#" alt="Network Logo preview" class="max-h-[100px] max-w-[133px] m-1 bg-platinum"/>
|
<img data-logo-upload-target="preview" src="#" alt="Network Logo preview" class="max-h-[100px] max-w-[133px] m-1 bg-platinum"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<%= network_fields.file_field :network_logo_file, class: "hidden", id: "file_upload_input_NEW_RECORD", data: { add_alt_network_logo_target: "networkLogo", logo_upload_type_param: "network", action: "change->logo-upload#uploadLogo" }, direct_upload: true %>
|
<%= network_fields.file_field :network_logo_file, class: "hidden", id: "file_upload_input_NEW_RECORD", data: { add_alt_network_logo_target: "networkLogo", logo_upload_type_param: "network", action: "change->logo-upload#uploadLogo" }, direct_upload: true %>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-end space-x-6 w-full">
|
<div class="flex items-end space-x-6 w-full">
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<%= network_fields.select :exception_type, options_for_select(["Zip","State"]), label: { text: "Exception Type" }, prompt: "Select Type", class: "w-full" %>
|
<%= network_fields.select :exception_type, options_for_select(["Zip","State"]), label: { text: "Exception Type" }, prompt: "Select Type", class: "w-full" %>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<%= network_fields.text_field :exception_value, label: { text: "Exception Value" }, class: "w-full" %>
|
<%= network_fields.text_field :exception_value, label: { text: "Exception Value" }, class: "w-full" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-center items-end w-full">
|
<div class="flex justify-center items-end w-full">
|
||||||
<div class="w-1/2">
|
<div class="w-1/2">
|
||||||
<%= network_fields.hidden_field :_destroy %>
|
<%= network_fields.hidden_field :_destroy %>
|
||||||
<%= button_tag "Remove", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-NEXT_SECONDARY_COLOR hover:text-platinum py-1 px-2 font-semibold leading-tight rounded-lg border-3 border-NEXT_SECONDARY_COLOR w-full", data: { action: "add-alt-network-logo#remove" } %>
|
<%= button_tag "Remove", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-NEXT_SECONDARY_COLOR hover:text-platinum py-1 px-2 font-semibold leading-tight rounded-lg border-3 border-NEXT_SECONDARY_COLOR w-full", data: { action: "add-alt-network-logo#remove" } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
<div class="bg-deepcove h-full w-full flex flex-col">
|
<div class="bg-deepcove h-full w-full flex flex-col">
|
||||||
<div class="flex justify-between my-5 font-bold text-4xl">
|
<div class="flex space-x-6 my-5 font-bold text-4xl">
|
||||||
<h1 class="text-platinum">New ID Card Setup:</h1>
|
<h1 class="text-platinum">New ID Card Setup:</h1>
|
||||||
<h1 class="text-verdigris">(<%= @employer.name %>)</h1>
|
<h1 class="text-verdigris">(<%= @employer.name %>)</h1>
|
||||||
</div>
|
</div>
|
||||||
<%= form_with model: @setup, local: true, multipart: true do |f| %>
|
<%= form_with model: @setup, local: true, multipart: true do |f| %>
|
||||||
|
<%= form_with model: @employer, url: import_employers_path, data: { turbo: false }, local: true, multipart: true do |form| %>
|
||||||
<div class="flex flex-col space-y-6 pb-10">
|
<div class="flex flex-col space-y-6 pb-10">
|
||||||
<div class="flex w-full items-end" data-controller="logo-upload" data-logo-upload-logo-type-value="employer" data-logo-upload-employer-name-value=<%= @employer.name %>>
|
<div class="flex w-full items-end" data-controller="logo-upload" data-logo-upload-logo-type-value="employer" data-logo-upload-employer-name-value=<%= @employer.name %>>
|
||||||
<div class="flex flex-col space-y-6 w-2/5">
|
<div class="flex flex-col space-y-6 w-2/5">
|
||||||
@@ -25,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex items-end">
|
<div class="flex items-end">
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="text-platinum">Employer Logo</div>
|
<div class="text-platinum text-lg">Employer Logo</div>
|
||||||
<div class="flex items-center justify-center self-end cursor-pointer bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-r h-10 transition duration-100">
|
<div class="flex items-center justify-center self-end cursor-pointer bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-r h-10 transition duration-100">
|
||||||
<label for="employer_logo_file" class="text-center cursor-pointer">
|
<label for="employer_logo_file" class="text-center cursor-pointer">
|
||||||
<%= icon "image-plus", library: "lucide" %>
|
<%= icon "image-plus", library: "lucide" %>
|
||||||
@@ -35,13 +36,13 @@
|
|||||||
<div class="hidden flex justify-center ml-15 rounded-lg border-4 border-atmosphere" data-logo-upload-target="previewContainer">
|
<div class="hidden flex justify-center ml-15 rounded-lg border-4 border-atmosphere" data-logo-upload-target="previewContainer">
|
||||||
<img data-logo-upload-target="preview" src="#" alt="Employer Logo preview" class="max-h-[100px] max-w-[133px] bg-platinum m-1"/>
|
<img data-logo-upload-target="preview" src="#" alt="Employer Logo preview" class="max-h-[100px] max-w-[133px] bg-platinum m-1"/>
|
||||||
</div>
|
</div>
|
||||||
<%= f.hidden_field :id_card_employer_logo_id, data: { logo_upload_target: "logofield", logo_upload_target: "employer" } %>
|
<%= f.hidden_field :employer_logo_id, label: { text: "Employer Logo" }, data: { logo_upload_target: "logoField" } %>
|
||||||
<%= f.file_field :add_or_update_logo, class: "hidden", id: "employer_logo_file", data: { logo_upload_target: "previewContainer", parent_value: "network_logo", action: "change->logo-upload#uploadLogo" }, direct_upload: true %>
|
<%= f.file_field :logo_file, class: "hidden", id: "employer_logo_file", data: { logo_upload_target: "previewContainer", parent_value: "network_logo", action: "change->logo-upload#uploadLogo" }, direct_upload: true %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="py-8">
|
<div class="py-8">
|
||||||
<%= f.submit "Create New Employer" %>
|
<%= f.submit "Create ID Card Setup" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -15,6 +15,8 @@ services:
|
|||||||
- HISTFILE=/usr/src/app/log/.bash_history
|
- HISTFILE=/usr/src/app/log/.bash_history
|
||||||
- RAILS_ENV=development
|
- RAILS_ENV=development
|
||||||
- TAILWIND_POLLING=true
|
- TAILWIND_POLLING=true
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=100
|
||||||
tty: true
|
tty: true
|
||||||
stdin_open: true
|
stdin_open: true
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ class CreateIdCardSetups < ActiveRecord::Migration[7.2]
|
|||||||
t.string :rx_group_number
|
t.string :rx_group_number
|
||||||
t.boolean :active, default: false
|
t.boolean :active, default: false
|
||||||
t.belongs_to :employer, null: false, foreign_key: true
|
t.belongs_to :employer, null: false, foreign_key: true
|
||||||
t.belongs_to :id_card_employer_logo, null: true, foreign_key: true
|
t.belongs_to :employer_logo, null: true, foreign_key: { to_table: :id_card_employer_logos }
|
||||||
t.belongs_to :id_card_network_logo, null: true, foreign_key: true
|
t.belongs_to :network_logo, null: true, foreign_key: { to_table: :id_card_network_logos }
|
||||||
t.belongs_to :id_card_provider_section, null: false, foreign_key: true
|
t.belongs_to :provider_section, null: true, foreign_key: { to_table: :id_card_provider_sections }
|
||||||
t.belongs_to :id_card_rx_section, null: false, foreign_key: true
|
t.belongs_to :rx_section, null: true, foreign_key: { to_table: :id_card_rx_sections }
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ class CreateIdCardPlans < ActiveRecord::Migration[7.2]
|
|||||||
t.string :title
|
t.string :title
|
||||||
t.integer :pb_product_key
|
t.integer :pb_product_key
|
||||||
t.string :pl_plan_key
|
t.string :pl_plan_key
|
||||||
t.belongs_to :id_card_setup, null: true, foreign_key: true
|
t.boolean :template
|
||||||
|
t.belongs_to :setup, null: true, foreign_key: { to_table: :id_card_setups }
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ class CreateIdCardPlanBenefits < ActiveRecord::Migration[7.2]
|
|||||||
t.string :benefit_desc
|
t.string :benefit_desc
|
||||||
t.string :benefit
|
t.string :benefit
|
||||||
t.integer :sequence
|
t.integer :sequence
|
||||||
t.belongs_to :id_card_plan, null: false, foreign_key: true
|
t.belongs_to :plan, null: false, foreign_key: { to_table: :id_card_plans }
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ class CreateIdCardExceptions < ActiveRecord::Migration[7.2]
|
|||||||
create_table :id_card_exceptions do |t|
|
create_table :id_card_exceptions do |t|
|
||||||
t.string :type
|
t.string :type
|
||||||
t.string :value
|
t.string :value
|
||||||
t.belongs_to :id_card_setup, null: false, foreign_key: true
|
t.belongs_to :setup, null: false, foreign_key: { to_table: :id_card_setups }
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ class CreateIdCardExceptionItems < ActiveRecord::Migration[7.2]
|
|||||||
create_table :id_card_exception_items do |t|
|
create_table :id_card_exception_items do |t|
|
||||||
t.string :field_name
|
t.string :field_name
|
||||||
t.string :field_value
|
t.string :field_value
|
||||||
t.belongs_to :id_card_exception, null: false, foreign_key: true
|
t.belongs_to :exception, null: false, foreign_key: { to_table: :id_card_exceptions }
|
||||||
t.belongs_to :id_card_network_logo, null: true, foreign_key: true
|
t.belongs_to :network_logo, null: true, foreign_key: { to_table: :id_card_network_logos }
|
||||||
t.belongs_to :id_card_provider_section, null: true, foreign_key: true
|
t.belongs_to :provider_section, null: true, foreign_key: { to_table: :id_card_provider_sections }
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|||||||
+31
-30
@@ -37,23 +37,23 @@ ActiveRecord::Schema[7.2].define(version: 2026_01_16_182836) do
|
|||||||
create_table "id_card_exception_items", force: :cascade do |t|
|
create_table "id_card_exception_items", force: :cascade do |t|
|
||||||
t.string "field_name"
|
t.string "field_name"
|
||||||
t.string "field_value"
|
t.string "field_value"
|
||||||
t.bigint "id_card_exception_id", null: false
|
t.bigint "exception_id", null: false
|
||||||
t.bigint "id_card_network_logo_id"
|
t.bigint "network_logo_id"
|
||||||
t.bigint "id_card_provider_section_id"
|
t.bigint "provider_section_id"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.index ["id_card_exception_id"], name: "index_id_card_exception_items_on_id_card_exception_id"
|
t.index ["exception_id"], name: "index_id_card_exception_items_on_exception_id"
|
||||||
t.index ["id_card_network_logo_id"], name: "index_id_card_exception_items_on_id_card_network_logo_id"
|
t.index ["network_logo_id"], name: "index_id_card_exception_items_on_network_logo_id"
|
||||||
t.index ["id_card_provider_section_id"], name: "index_id_card_exception_items_on_id_card_provider_section_id"
|
t.index ["provider_section_id"], name: "index_id_card_exception_items_on_provider_section_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "id_card_exceptions", force: :cascade do |t|
|
create_table "id_card_exceptions", force: :cascade do |t|
|
||||||
t.string "type"
|
t.string "type"
|
||||||
t.string "value"
|
t.string "value"
|
||||||
t.bigint "id_card_setup_id", null: false
|
t.bigint "setup_id", null: false
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.index ["id_card_setup_id"], name: "index_id_card_exceptions_on_id_card_setup_id"
|
t.index ["setup_id"], name: "index_id_card_exceptions_on_setup_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "id_card_network_logos", force: :cascade do |t|
|
create_table "id_card_network_logos", force: :cascade do |t|
|
||||||
@@ -70,20 +70,21 @@ ActiveRecord::Schema[7.2].define(version: 2026_01_16_182836) do
|
|||||||
t.string "benefit_desc"
|
t.string "benefit_desc"
|
||||||
t.string "benefit"
|
t.string "benefit"
|
||||||
t.integer "sequence"
|
t.integer "sequence"
|
||||||
t.bigint "id_card_plan_id", null: false
|
t.bigint "plan_id", null: false
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.index ["id_card_plan_id"], name: "index_id_card_plan_benefits_on_id_card_plan_id"
|
t.index ["plan_id"], name: "index_id_card_plan_benefits_on_plan_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "id_card_plans", force: :cascade do |t|
|
create_table "id_card_plans", force: :cascade do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.integer "pb_product_key"
|
t.integer "pb_product_key"
|
||||||
t.string "pl_plan_key"
|
t.string "pl_plan_key"
|
||||||
t.bigint "id_card_setup_id"
|
t.boolean "template"
|
||||||
|
t.bigint "setup_id"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.index ["id_card_setup_id"], name: "index_id_card_plans_on_id_card_setup_id"
|
t.index ["setup_id"], name: "index_id_card_plans_on_setup_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "id_card_print_data", force: :cascade do |t|
|
create_table "id_card_print_data", force: :cascade do |t|
|
||||||
@@ -226,17 +227,17 @@ ActiveRecord::Schema[7.2].define(version: 2026_01_16_182836) do
|
|||||||
t.string "rx_group_number"
|
t.string "rx_group_number"
|
||||||
t.boolean "active", default: false
|
t.boolean "active", default: false
|
||||||
t.bigint "employer_id", null: false
|
t.bigint "employer_id", null: false
|
||||||
t.bigint "id_card_employer_logo_id"
|
t.bigint "employer_logo_id"
|
||||||
t.bigint "id_card_network_logo_id"
|
t.bigint "network_logo_id"
|
||||||
t.bigint "id_card_provider_section_id", null: false
|
t.bigint "provider_section_id"
|
||||||
t.bigint "id_card_rx_section_id", null: false
|
t.bigint "rx_section_id"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.index ["employer_id"], name: "index_id_card_setups_on_employer_id"
|
t.index ["employer_id"], name: "index_id_card_setups_on_employer_id"
|
||||||
t.index ["id_card_employer_logo_id"], name: "index_id_card_setups_on_id_card_employer_logo_id"
|
t.index ["employer_logo_id"], name: "index_id_card_setups_on_employer_logo_id"
|
||||||
t.index ["id_card_network_logo_id"], name: "index_id_card_setups_on_id_card_network_logo_id"
|
t.index ["network_logo_id"], name: "index_id_card_setups_on_network_logo_id"
|
||||||
t.index ["id_card_provider_section_id"], name: "index_id_card_setups_on_id_card_provider_section_id"
|
t.index ["provider_section_id"], name: "index_id_card_setups_on_provider_section_id"
|
||||||
t.index ["id_card_rx_section_id"], name: "index_id_card_setups_on_id_card_rx_section_id"
|
t.index ["rx_section_id"], name: "index_id_card_setups_on_rx_section_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "members", force: :cascade do |t|
|
create_table "members", force: :cascade do |t|
|
||||||
@@ -254,17 +255,17 @@ ActiveRecord::Schema[7.2].define(version: 2026_01_16_182836) do
|
|||||||
t.index ["id_card_plan_id"], name: "index_members_on_id_card_plan_id"
|
t.index ["id_card_plan_id"], name: "index_members_on_id_card_plan_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_foreign_key "id_card_exception_items", "id_card_exceptions"
|
add_foreign_key "id_card_exception_items", "id_card_exceptions", column: "exception_id"
|
||||||
add_foreign_key "id_card_exception_items", "id_card_network_logos"
|
add_foreign_key "id_card_exception_items", "id_card_network_logos", column: "network_logo_id"
|
||||||
add_foreign_key "id_card_exception_items", "id_card_provider_sections"
|
add_foreign_key "id_card_exception_items", "id_card_provider_sections", column: "provider_section_id"
|
||||||
add_foreign_key "id_card_exceptions", "id_card_setups"
|
add_foreign_key "id_card_exceptions", "id_card_setups", column: "setup_id"
|
||||||
add_foreign_key "id_card_plan_benefits", "id_card_plans"
|
add_foreign_key "id_card_plan_benefits", "id_card_plans", column: "plan_id"
|
||||||
add_foreign_key "id_card_plans", "id_card_setups"
|
add_foreign_key "id_card_plans", "id_card_setups", column: "setup_id"
|
||||||
add_foreign_key "id_card_setups", "employers"
|
add_foreign_key "id_card_setups", "employers"
|
||||||
add_foreign_key "id_card_setups", "id_card_employer_logos"
|
add_foreign_key "id_card_setups", "id_card_employer_logos", column: "employer_logo_id"
|
||||||
add_foreign_key "id_card_setups", "id_card_network_logos"
|
add_foreign_key "id_card_setups", "id_card_network_logos", column: "network_logo_id"
|
||||||
add_foreign_key "id_card_setups", "id_card_provider_sections"
|
add_foreign_key "id_card_setups", "id_card_provider_sections", column: "provider_section_id"
|
||||||
add_foreign_key "id_card_setups", "id_card_rx_sections"
|
add_foreign_key "id_card_setups", "id_card_rx_sections", column: "rx_section_id"
|
||||||
add_foreign_key "members", "employers"
|
add_foreign_key "members", "employers"
|
||||||
add_foreign_key "members", "id_card_plans"
|
add_foreign_key "members", "id_card_plans"
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user