Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
module Enterprise::Account::ConversationsResolutionSchedulerJob
|
||||
def perform
|
||||
super
|
||||
|
||||
resolve_captain_conversations
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def resolve_captain_conversations
|
||||
CaptainInbox.all.find_each(batch_size: 100) do |captain_inbox|
|
||||
inbox = captain_inbox.inbox
|
||||
|
||||
next if inbox.email?
|
||||
|
||||
Captain::InboxPendingConversationsResolutionJob.perform_later(
|
||||
inbox
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
class Enterprise::CloudflareVerificationJob < ApplicationJob
|
||||
queue_as :default
|
||||
|
||||
def perform(portal_id)
|
||||
portal = Portal.find(portal_id)
|
||||
return unless portal && portal.custom_domain.present?
|
||||
|
||||
result = check_hostname_status(portal)
|
||||
|
||||
create_hostname(portal) if result[:errors].present?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_hostname(portal)
|
||||
Cloudflare::CreateCustomHostnameService.new(portal: portal).perform
|
||||
end
|
||||
|
||||
def check_hostname_status(portal)
|
||||
Cloudflare::CheckCustomHostnameService.new(portal: portal).perform
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
class Enterprise::CreateStripeCustomerJob < ApplicationJob
|
||||
queue_as :default
|
||||
|
||||
def perform(account)
|
||||
Enterprise::Billing::CreateStripeCustomerService.new(account: account).perform
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,26 @@
|
||||
module Enterprise::DeleteObjectJob
|
||||
private
|
||||
|
||||
def heavy_associations
|
||||
super.merge(
|
||||
SlaPolicy => %i[applied_slas]
|
||||
).freeze
|
||||
end
|
||||
|
||||
def process_post_deletion_tasks(object, user, ip)
|
||||
create_audit_entry(object, user, ip)
|
||||
end
|
||||
|
||||
def create_audit_entry(object, user, ip)
|
||||
return unless %w[Inbox Conversation SlaPolicy].include?(object.class.to_s) && user.present?
|
||||
|
||||
Enterprise::AuditLog.create(
|
||||
auditable: object,
|
||||
audited_changes: object.attributes,
|
||||
action: 'destroy',
|
||||
user: user,
|
||||
associated: object.account,
|
||||
remote_address: ip
|
||||
)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,30 @@
|
||||
module Enterprise::Internal::CheckNewVersionsJob
|
||||
def perform
|
||||
super
|
||||
update_plan_info
|
||||
reconcile_premium_config_and_features
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_plan_info
|
||||
return if @instance_info.blank?
|
||||
|
||||
update_installation_config(key: 'INSTALLATION_PRICING_PLAN', value: @instance_info['plan'])
|
||||
update_installation_config(key: 'INSTALLATION_PRICING_PLAN_QUANTITY', value: @instance_info['plan_quantity'])
|
||||
update_installation_config(key: 'CHATWOOT_SUPPORT_WEBSITE_TOKEN', value: @instance_info['chatwoot_support_website_token'])
|
||||
update_installation_config(key: 'CHATWOOT_SUPPORT_IDENTIFIER_HASH', value: @instance_info['chatwoot_support_identifier_hash'])
|
||||
update_installation_config(key: 'CHATWOOT_SUPPORT_SCRIPT_URL', value: @instance_info['chatwoot_support_script_url'])
|
||||
end
|
||||
|
||||
def update_installation_config(key:, value:)
|
||||
config = InstallationConfig.find_or_initialize_by(name: key)
|
||||
config.value = value
|
||||
config.locked = true
|
||||
config.save!
|
||||
end
|
||||
|
||||
def reconcile_premium_config_and_features
|
||||
Internal::ReconcilePlanConfigService.new.perform
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
module Enterprise::TriggerScheduledItemsJob
|
||||
def perform
|
||||
super
|
||||
|
||||
## Triggers Enterprise specific jobs
|
||||
####################################
|
||||
|
||||
# Triggers Account Sla jobs
|
||||
Sla::TriggerSlasForAccountsJob.perform_later
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user