From 3b6d58bbdf4793d410a4f9e2dfaf068dd3bf4d6d Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Sun, 27 Oct 2019 11:11:51 +0530 Subject: [PATCH] Refactor Reports Controller --- app/controllers/api/v1/reports_controller.rb | 23 +++++++------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/app/controllers/api/v1/reports_controller.rb b/app/controllers/api/v1/reports_controller.rb index b4c9a1c7e..e155d3af7 100644 --- a/app/controllers/api/v1/reports_controller.rb +++ b/app/controllers/api/v1/reports_controller.rb @@ -41,25 +41,18 @@ class Api::V1::ReportsController < Api::BaseController end def account_summary_metrics - ACCOUNT_METRICS.each_with_object({}) do |metric, result| - data = ReportBuilder.new(current_account, account_summary_params(metric)).build - - if AVG_ACCOUNT_METRICS.include?(metric) - sum = data.inject(0) { |sum, hash| sum + hash[:value].to_i } - sum /= data.length unless sum.zero? - else - sum = data.inject(0) { |sum, hash| sum + hash[:value].to_i } - end - - result[metric] = sum - end + summary_metrics(ACCOUNT_METRICS, :account_summary_params, AVG_ACCOUNT_METRICS) end def agent_summary_metrics - AGENT_METRICS.each_with_object({}) do |metric, result| - data = ReportBuilder.new(current_account, agent_summary_params(metric)).build + summary_metrics(AGENT_METRICS, :agent_summary_params, AVG_AGENT_METRICS) + end - if AVG_AGENT_METRICS.include?(metric) + def summary_metrics(metrics, calc_function, avg_metrics) + metrics.each_with_object({}) do |metric, result| + data = ReportBuilder.new(current_account, send(calc_function, metric)).build + + if avg_metrics.include?(metric) sum = data.inject(0) { |sum, hash| sum + hash[:value].to_i } sum /= data.length unless sum.zero? else