45 lines
937 B
Ruby
45 lines
937 B
Ruby
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
|