Files
baclight/app/controllers/id_card/print_controller.rb
T

133 lines
5.5 KiB
Ruby
Raw Normal View History

2026-03-19 00:42:27 -04:00
module IdCard
class PrintController < ApplicationController
# View Methods
def index
2026-03-20 10:46:53 -04:00
@employer_setups = IdCard::Setup.active.to_a
2026-04-15 08:12:47 -04:00
@queue_members = IdCardQueueService::GetQueuedMembers.new().call
2026-06-17 23:23:36 -04:00
update_missing_members(@queue_members)
2026-04-15 08:12:47 -04:00
add_queued_count_to_employer_setup(@queue_members)
@queued = @employer_setups.select { |setup| setup.queued_card_count > 0 }.sort_by { |setup| setup.print_name }
@not_queued = @employer_setups.select { |setup| setup.queued_card_count == 0 }.sort_by { |setup| setup.print_name }
2026-03-19 00:42:27 -04:00
render :index
end
# API Methods
def print_all_queued
2026-04-15 08:12:47 -04:00
@queue_members = IdCardQueueService::GetQueuedMembers.new().call
2026-06-17 23:23:36 -04:00
# @queue_members.delete_if { |em| ["2", "19", "16", "54"].include?(em[:pl_plan_key])}
# @queue_members.push({pl_plan_key: "54", member_keys: [383840]})
2026-04-15 08:12:47 -04:00
cards_pdf = IdCardPrinterService::CardsGenerator.new(@queue_members, "PrintCard").call
send_data cards_pdf.to_pdf,
filename: "all_queued_cards_#{Date.today}.pdf",
type: "application/pdf",
disposition: 'attachment'
2026-03-19 00:42:27 -04:00
end
def print_queued_by_employer
pl_plan_key = params[:id].to_s
@employer = Employer.find_by(pl_plan_key: pl_plan_key)
2026-04-15 08:12:47 -04:00
@queue_members = IdCardQueueService::GetQueuedMembers.new(pl_plan_key).call
2026-06-17 23:23:36 -04:00
# @queue_members.first[:member_keys].delete(379590) && @queue_members.first[:member_keys].push(379610)
2026-04-15 08:12:47 -04:00
cards_pdf = IdCardPrinterService::CardsGenerator.new(@queue_members, "PrintCard").call
2026-03-19 00:42:27 -04:00
send_data cards_pdf.to_pdf,
filename: "#{@employer.name.parameterize(separator: "_")}_queued_cards_#{Date.today}.pdf",
type: "application/pdf",
disposition: 'attachment'
end
def generate_sample
2026-05-06 13:28:16 -04:00
employer_id = params[:id]
@employer = Employer.find(employer_id)
sample_cards_pdf = IdCardPrinterService::SampleCardsGenerator.new(@employer.id).call
2026-03-19 00:42:27 -04:00
send_data sample_cards_pdf.to_pdf,
filename: "#{@employer.name.parameterize(separator: "_")}_sample_cards_#{Date.today}.pdf",
type: "application/pdf",
disposition: 'attachment'
end
def generate_print
2026-03-20 10:46:53 -04:00
if Integer(params[:id], exception: false).is_a?(Integer)
pl_plan_key = params[:id].to_s
@employer = Employer.find_by(pl_plan_key: pl_plan_key)
else
slug = params[:id]
@employer = Employer.find_by(slug: slug)
end
2026-03-27 08:04:37 -04:00
cards_pdf = IdCardPrinterService::CardsGenerator.new(@employer.employer_member_keys, "PrintCard").call
2026-03-19 00:42:27 -04:00
send_data cards_pdf.to_pdf,
filename: "#{@employer.name.parameterize(separator: "_")}_print_cards_#{Date.today}.pdf",
type: "application/pdf",
disposition: 'attachment'
end
def generate_mobile_display
2026-03-20 10:46:53 -04:00
if Integer(params[:id], exception: false).is_a?(Integer)
pl_plan_key = params[:id].to_s
@employer = Employer.find_by(pl_plan_key: pl_plan_key)
else
slug = params[:id]
@employer = Employer.find_by(slug: slug)
end
cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "MobileDisplayCard").call
2026-03-19 00:42:27 -04:00
send_data cards_pdf.to_pdf,
filename: "#{@employer.name.parameterize(separator: "_")}_mobile_display_cards_#{Date.today}.pdf",
type: "application/pdf",
disposition: 'attachment'
end
def generate_full_page
2026-03-20 10:46:53 -04:00
if Integer(params[:id], exception: false).is_a?(Integer)
pl_plan_key = params[:id].to_s
@employer = Employer.find_by(pl_plan_key: pl_plan_key)
else
slug = params[:id]
@employer = Employer.find_by(slug: slug)
end
2026-04-15 08:12:47 -04:00
cards_pdf = IdCardPrinterService::CardsGenerator.new(@employer.employer_member_keys, "FullPageCard", true).call
# cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "FullPageCard", true).call
2026-03-19 00:42:27 -04:00
cards_pdf.rewind
send_data cards_pdf.sysread,
filename: "#{@employer.name.parameterize(separator: "_")}_full_page_cards_#{Date.today}.zip",
type: 'application/zip',
disposition: 'attachment'
end
private
2026-06-17 23:23:36 -04:00
def update_missing_members(queued_employer_members)
queued_employer_members.each do |queued_employer|
existing_members = Member.where(pb_entity_key: queued_employer[:member_keys]).pluck(:pb_entity_key)
missing_members = queued_employer[:member_keys] - existing_members
missing_members.each do |pb_entity_key|
AutomationService::MemberUpdate.new(queued_employer[:pl_plan_key], pb_entity_key).call
end
end
end
2026-03-19 00:42:27 -04:00
2026-04-15 08:12:47 -04:00
def add_queued_count_to_employer_setup(queued_employer_members)
queued_employer_members.each do |queued_employer|
match = @employer_setups.find { |setup| setup.pl_plan_key == queued_employer[:pl_plan_key] }
2026-03-19 00:42:27 -04:00
if match.present?
2026-04-15 08:12:47 -04:00
match.queued_card_count = queued_employer[:member_keys].length
2026-03-19 00:42:27 -04:00
end
end
end
end
end