diff --git a/app/controllers/api/v2/accounts/reports_controller.rb b/app/controllers/api/v2/accounts/reports_controller.rb index 192b3619c..cb93cbef6 100644 --- a/app/controllers/api/v2/accounts/reports_controller.rb +++ b/app/controllers/api/v2/accounts/reports_controller.rb @@ -112,6 +112,7 @@ class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController common_params.merge({ since: range[:current][:since], until: range[:current][:until], + timezone: params[:timezone], timezone_offset: params[:timezone_offset] }) end @@ -120,6 +121,7 @@ class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController common_params.merge({ since: range[:previous][:since], until: range[:previous][:until], + timezone: params[:timezone], timezone_offset: params[:timezone_offset] }) end @@ -129,6 +131,7 @@ class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController metric: params[:metric], since: params[:since], until: params[:until], + timezone: params[:timezone], timezone_offset: params[:timezone_offset] }) end diff --git a/app/controllers/api/v2/accounts/summary_reports_controller.rb b/app/controllers/api/v2/accounts/summary_reports_controller.rb index 98b3f05d7..a504d894a 100644 --- a/app/controllers/api/v2/accounts/summary_reports_controller.rb +++ b/app/controllers/api/v2/accounts/summary_reports_controller.rb @@ -3,15 +3,15 @@ class Api::V2::Accounts::SummaryReportsController < Api::V1::Accounts::BaseContr before_action :prepare_builder_params, only: [:agent, :team, :inbox, :label, :channel] def agent - render_report_with(V2::Reports::AgentSummaryBuilder) + render_report_with(V2::Reports::AgentSummaryBuilder, type: :agent) end def team - render_report_with(V2::Reports::TeamSummaryBuilder) + render_report_with(V2::Reports::TeamSummaryBuilder, type: :team) end def inbox - render_report_with(V2::Reports::InboxSummaryBuilder) + render_report_with(V2::Reports::InboxSummaryBuilder, type: :inbox) end def label @@ -36,15 +36,18 @@ class Api::V2::Accounts::SummaryReportsController < Api::V1::Accounts::BaseContr until: permitted_params[:until], business_hours: ActiveModel::Type::Boolean.new.cast(permitted_params[:business_hours]) } + @builder_params[:timezone] = permitted_params[:timezone] if permitted_params[:timezone].present? + @builder_params[:timezone_offset] = permitted_params[:timezone_offset] if permitted_params[:timezone_offset].present? end - def render_report_with(builder_class) - builder = builder_class.new(account: Current.account, params: @builder_params) + def render_report_with(builder_class, type: nil) + builder_params = type.present? ? @builder_params.merge(type: type) : @builder_params + builder = builder_class.new(account: Current.account, params: builder_params) render json: builder.build end def permitted_params - params.permit(:since, :until, :business_hours) + params.permit(:since, :until, :business_hours, :timezone, :timezone_offset) end def date_range_too_long? diff --git a/spec/controllers/api/v2/accounts/summary_reports_controller_spec.rb b/spec/controllers/api/v2/accounts/summary_reports_controller_spec.rb index 38c66eeb0..696e1f53e 100644 --- a/spec/controllers/api/v2/accounts/summary_reports_controller_spec.rb +++ b/spec/controllers/api/v2/accounts/summary_reports_controller_spec.rb @@ -45,7 +45,10 @@ RSpec.describe 'Summary Reports API', type: :request do headers: admin.create_new_auth_token, as: :json - expect(V2::Reports::AgentSummaryBuilder).to have_received(:new).with(account: account, params: params) + expect(V2::Reports::AgentSummaryBuilder).to have_received(:new).with( + account: account, + params: params.merge(type: :agent) + ) expect(agent_summary_builder).to have_received(:build) expect(response).to have_http_status(:success) @@ -96,7 +99,10 @@ RSpec.describe 'Summary Reports API', type: :request do headers: admin.create_new_auth_token, as: :json - expect(V2::Reports::InboxSummaryBuilder).to have_received(:new).with(account: account, params: params) + expect(V2::Reports::InboxSummaryBuilder).to have_received(:new).with( + account: account, + params: params.merge(type: :inbox) + ) expect(inbox_summary_builder).to have_received(:build) expect(response).to have_http_status(:success) @@ -147,7 +153,10 @@ RSpec.describe 'Summary Reports API', type: :request do headers: admin.create_new_auth_token, as: :json - expect(V2::Reports::TeamSummaryBuilder).to have_received(:new).with(account: account, params: params) + expect(V2::Reports::TeamSummaryBuilder).to have_received(:new).with( + account: account, + params: params.merge(type: :team) + ) expect(team_summary_builder).to have_received(:build) expect(response).to have_http_status(:success)