diff --git a/app/builders/v2/report_builder.rb b/app/builders/v2/report_builder.rb index 459c0759a..475a34ccb 100644 --- a/app/builders/v2/report_builder.rb +++ b/app/builders/v2/report_builder.rb @@ -4,7 +4,7 @@ class V2::ReportBuilder attr_reader :account, :params DEFAULT_GROUP_BY = 'day'.freeze - AGENT_RESULTS_PER_PAGE = 10 + AGENT_RESULTS_PER_PAGE = 25 def initialize(account, params) @account = account @@ -46,7 +46,7 @@ class V2::ReportBuilder if params[:type].equal?(:account) conversations else - agent_metrics + agent_metrics.sort_by { |hash| hash[:metric][:open] }.reverse end end @@ -95,10 +95,10 @@ class V2::ReportBuilder end def conversations - @open_conversations = scope.conversations.open + @open_conversations = scope.conversations.where(account_id: @account.id).open first_response_count = scope.reporting_events.where(name: 'first_response', conversation_id: @open_conversations.pluck('id')).count metric = { - total: @open_conversations.count, + open: @open_conversations.count, unattended: @open_conversations.count - first_response_count } metric[:unassigned] = @open_conversations.unassigned.count if params[:type].equal?(:account) diff --git a/app/javascript/dashboard/i18n/locale/en/report.json b/app/javascript/dashboard/i18n/locale/en/report.json index a774dff33..35a349b56 100644 --- a/app/javascript/dashboard/i18n/locale/en/report.json +++ b/app/javascript/dashboard/i18n/locale/en/report.json @@ -387,18 +387,18 @@ "LIVE": "Live", "ACCOUNT_CONVERSATIONS": { "HEADER": "Open Conversations", - "LOADING_MESSAGE": "Conversations Loading...", - "TOTAL" : "Total", + "LOADING_MESSAGE": "Loading conversation metrics...", + "OPEN" : "Open", "UNATTENDED": "Unattended", "UNASSIGNED": "Unassigned" }, "AGENT_CONVERSATIONS": { "HEADER": "Conversations by agents", - "LOADING_MESSAGE": "Agents Loading...", + "LOADING_MESSAGE": "Loading agent metrics...", "NO_AGENTS": "There are no conversations by agents", "TABLE_HEADER": { "AGENT": "Agent", - "TOTAL": "Total", + "OPEN": "OPEN", "UNATTENDED": "Unattended", "STATUS": "Status" } diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/AgentTable.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/AgentTable.vue index 55a93d2fe..2a5694feb 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/AgentTable.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/AgentTable.vue @@ -20,8 +20,8 @@ @@ -70,7 +70,7 @@ export default { agent: agent.name, email: agent.email, thumbnail: agent.thumbnail, - total: agent.metric.total || 0, + open: agent.metric.open || 0, unattended: agent.metric.unattended || 0, status: agent.availability, }; @@ -103,10 +103,10 @@ export default { ), }, { - field: 'total', - key: 'total', + field: 'open', + key: 'open', title: this.$t( - 'OVERVIEW_REPORTS.AGENT_CONVERSATIONS.TABLE_HEADER.TOTAL' + 'OVERVIEW_REPORTS.AGENT_CONVERSATIONS.TABLE_HEADER.OPEN' ), align: 'left', width: 10, diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/constants.js b/app/javascript/dashboard/routes/dashboard/settings/reports/constants.js index 88f04b0f1..1e345fe22 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/constants.js +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/constants.js @@ -123,7 +123,7 @@ export const METRIC_CHART = { }; export const OVERVIEW_METRICS = { - total: 'TOTAL', + open: 'OPEN', unattended: 'UNATTENDED', unassigned: 'UNASSIGNED', online: 'ONLINE', diff --git a/spec/controllers/api/v2/accounts/report_controller_spec.rb b/spec/controllers/api/v2/accounts/report_controller_spec.rb index 8c6f989c8..acad237ec 100644 --- a/spec/controllers/api/v2/accounts/report_controller_spec.rb +++ b/spec/controllers/api/v2/accounts/report_controller_spec.rb @@ -10,6 +10,7 @@ RSpec.describe 'Reports API', type: :request do let(:default_timezone) { ActiveSupport::TimeZone[0]&.name } let(:date_timestamp) { Time.current.in_time_zone(default_timezone).beginning_of_day.to_i } let(:params) { { timezone_offset: Time.zone.utc_offset } } + let(:new_account) { create(:account) } before do create_list(:conversation, 10, account: account, inbox: inbox, @@ -73,7 +74,7 @@ RSpec.describe 'Reports API', type: :request do expect(response).to have_http_status(:success) json_response = JSON.parse(response.body) - expect(json_response['total']).to eq(11) + expect(json_response['open']).to eq(11) expect(json_response['unattended']).to eq(11) expect(json_response['unassigned']).to eq(1) end @@ -81,6 +82,8 @@ RSpec.describe 'Reports API', type: :request do it 'return conversation metrics for user in account level' do create_list(:conversation, 2, account: account, inbox: inbox, assignee: admin, created_at: Time.zone.today) + create_list(:conversation, 2, account: new_account, inbox: inbox, + assignee: admin, created_at: Time.zone.today) get "/api/v2/accounts/#{account.id}/reports/conversations", params: { @@ -96,7 +99,7 @@ RSpec.describe 'Reports API', type: :request do user_metrics = json_response.find { |item| item['name'] == admin[:name] } expect(user_metrics.present?).to be true - expect(user_metrics['metric']['total']).to eq(2) + expect(user_metrics['metric']['open']).to eq(2) expect(user_metrics['metric']['unattended']).to eq(2) end @@ -116,7 +119,7 @@ RSpec.describe 'Reports API', type: :request do json_response = JSON.parse(response.body) expect(json_response.blank?).to be false - expect(json_response[0]['metric']['total']).to eq(10) + expect(json_response[0]['metric']['open']).to eq(10) expect(json_response[0]['metric']['unattended']).to eq(10) end end