module IdCardQueueService class GetQueuedMembers def initialize(pl_plan_keys = nil) if pl_plan_keys @employer_pl_plan_keys = Array.wrap(pl_plan_keys) else @employer_pl_plan_keys = IdCard::Setup.active.pluck(:pl_plan_key) end end def call employer_member_keys = @employer_pl_plan_keys.map do |pl_plan_key| queued_employer_members = Vhcs::VwmbMember.joins(' INNER JOIN "CLDocument" ON "CLDocument"."RecipientKey" = "VWMBMember"."MBMemberKey" ').select(' "VWMBMember"."PBEntityKey" ').where(' "CLDocument"."DocStatus" <> ? AND "CLDocument"."PLPlanKey" = ? AND "CLDocument"."PrintDate" IS NULL AND "CLDocument"."CreateDate" > ?', "Printed", pl_plan_key, Date.new(2026, 7, 17) ).pluck(:pb_entity_key) if queued_employer_members.present? { pl_plan_key: pl_plan_key, member_keys: queued_employer_members } else "" end end employer_member_keys.compact_blank end private def format_employers_member_keys(raw_employers_member_keys) raw_employers_member_keys.map do |hash| hash["PlanKey"] = hash["PlanKey"].to_s hash["MemberKeys"] = hash["MemberKeys"].split(", ").map(&:to_i) hash.transform_keys(key_map) end end end end