feat: Add support for bulk snooze until (#9360)

This commit is contained in:
Muhsin Keloth
2024-05-08 08:55:31 +05:30
committed by GitHub
parent 2ef767d60f
commit d649bd2dfd
3 changed files with 24 additions and 1 deletions

View File

@@ -21,6 +21,6 @@ class Api::V1::Accounts::BulkActionsController < Api::V1::Accounts::BaseControll
end
def permitted_params
params.permit(:type, ids: [], fields: [:status, :assignee_id, :team_id], labels: [add: [], remove: []])
params.permit(:type, :snoozed_until, ids: [], fields: [:status, :assignee_id, :team_id], labels: [add: [], remove: []])
end
end

View File

@@ -1,4 +1,6 @@
class BulkActionsJob < ApplicationJob
include DateRangeHelper
queue_as :medium
attr_accessor :records
@@ -23,6 +25,7 @@ class BulkActionsJob < ApplicationJob
params = available_params(@params)
records.each do |conversation|
bulk_add_labels(conversation)
bulk_snoozed_until(conversation)
conversation.update(params) if params
end
end
@@ -43,6 +46,10 @@ class BulkActionsJob < ApplicationJob
conversation.add_labels(@params[:labels][:add]) if @params[:labels] && @params[:labels][:add]
end
def bulk_snoozed_until(conversation)
conversation.snoozed_until = parse_date_time(@params[:snoozed_until].to_s) if @params[:snoozed_until]
end
def remove_labels(conversation)
return unless @params[:labels] && @params[:labels][:remove]

View File

@@ -65,5 +65,21 @@ RSpec.describe BulkActionsJob do
expect(Conversation.second.assignee_id).to eq(agent.id)
expect(Conversation.third.assignee_id).to eq(agent.id)
end
it 'bulk updates the snoozed_until' do
params = {
type: 'Conversation',
fields: { status: 'snoozed', snoozed_until: Time.zone.now },
ids: Conversation.first(3).pluck(:display_id)
}
expect(Conversation.first.snoozed_until).to be_nil
described_class.perform_now(account: account, params: params, user: agent)
expect(Conversation.first.snoozed_until).to be_present
expect(Conversation.second.snoozed_until).to be_present
expect(Conversation.third.snoozed_until).to be_present
end
end
end