Files
baclight/app/models/concerns/employer_automation.rb
T
2026-05-06 13:28:16 -04:00

103 lines
2.4 KiB
Ruby

module EmployerAutomation
extend ActiveSupport::Concern
included do
scope :uninitialized, -> {
where(initialized: false)
}
scope :initialized, -> {
where(initialized: true)
}
scope :not_automation_ready, -> {
where(group_number: [nil, ''])
}
scope :automation_ready, -> {
where.not(group_number: [nil, ''])
}
scope :in_automation_initilization, -> {
left_outer_joins(:id_card_setup)
.where(initialized: false)
.or(
where(id_card_setup: {initialized: false})
).distinct
}
scope :missing_keychain_initialization, -> {
uninitialized.automation_ready
}
scope :uninitialized_id_card_setup, -> {
left_outer_joins(:id_card_setup)
.where(id_card_setup: {initialized: false})
}
scope :missing_plans, -> {
left_outer_joins(:plans)
.where(id_card_plans: { pb_product_key: [nil, ""] })
.distinct
}
scope :has_plans, -> {
left_outer_joins(:plans)
.where("id_card_plans.pb_product_key IS NOT NULL AND id_card_plans.pb_product_key != ''")
.distinct
}
scope :missing_members, -> {
left_outer_joins(:members)
.where(members: { id: nil })
.distinct
}
scope :has_members, -> {
left_outer_joins(:members)
.where.not(members: { id: nil })
.distinct
}
scope :missing_plans_initialization, -> {
initialized.uninitialized_id_card_setup.missing_plans
}
scope :missing_members_initialization, -> {
initialized.uninitialized_id_card_setup.has_plans.missing_members
}
scope :ready_for_id_card_activation, -> {
initialized.uninitialized_id_card_setup.has_members
}
scope :with_active_id_card_setup, -> {
active.left_outer_joins(:id_card_setup)
.where(id_card_setup: {active: true})
}
scope :deactivated, -> {
inactive.initialized
}
end
def sync_members_with_vhcs
AutomationService::EmployerMembersUpdate.new(pl_plan_key).call
end
def sync_plans_with_vhcs
AutomationService::EmployerPlansUpdate.new(pl_plan_key).call
end
def automation_identifier
attributes.with_indifferent_access.slice(
pl_plan_key.present? ? :pl_plan_key : :group_number
)
end
def sync_with_vhcs
employer_identifier = automation_identifier
AutomationService::EmployerUpdate.new(employer_identifier).call
end
end