37 lines
922 B
Ruby
37 lines
922 B
Ruby
class Crm::SetupJob < ApplicationJob
|
|
queue_as :default
|
|
|
|
def perform(hook_id)
|
|
hook = Integrations::Hook.find_by(id: hook_id)
|
|
|
|
return if hook.blank? || hook.disabled?
|
|
|
|
begin
|
|
setup_service = create_setup_service(hook)
|
|
return if setup_service.nil?
|
|
|
|
setup_service.setup
|
|
rescue StandardError => e
|
|
ChatwootExceptionTracker.new(e, account: hook.account).capture_exception
|
|
Rails.logger.error "Error in CRM setup for hook ##{hook_id} (#{hook.app_id}): #{e.message}"
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def create_setup_service(hook)
|
|
case hook.app_id
|
|
when 'leadsquared'
|
|
Crm::Leadsquared::SetupService.new(hook)
|
|
# Add cases for future CRMs here
|
|
# when 'hubspot'
|
|
# Crm::Hubspot::SetupService.new(hook)
|
|
# when 'zoho'
|
|
# Crm::Zoho::SetupService.new(hook)
|
|
else
|
|
Rails.logger.error "Unsupported CRM app_id: #{hook.app_id}"
|
|
nil
|
|
end
|
|
end
|
|
end
|