Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
class Contacts::BulkActionService
|
||||
def initialize(account:, user:, params:)
|
||||
@account = account
|
||||
@user = user
|
||||
@params = params.deep_symbolize_keys
|
||||
end
|
||||
|
||||
def perform
|
||||
return delete_contacts if delete_requested?
|
||||
return assign_labels if labels_to_add.any?
|
||||
|
||||
Rails.logger.warn("Unknown contact bulk operation payload: #{@params.keys}")
|
||||
{ success: false, error: 'unknown_operation' }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def assign_labels
|
||||
Contacts::BulkAssignLabelsService.new(
|
||||
account: @account,
|
||||
contact_ids: ids,
|
||||
labels: labels_to_add
|
||||
).perform
|
||||
end
|
||||
|
||||
def delete_contacts
|
||||
Contacts::BulkDeleteService.new(
|
||||
account: @account,
|
||||
contact_ids: ids
|
||||
).perform
|
||||
end
|
||||
|
||||
def ids
|
||||
Array(@params[:ids]).compact
|
||||
end
|
||||
|
||||
def labels_to_add
|
||||
@labels_to_add ||= Array(@params.dig(:labels, :add)).reject(&:blank?)
|
||||
end
|
||||
|
||||
def delete_requested?
|
||||
@params[:action_name] == 'delete'
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user