From 7702acb8748357dd26ab50f2328e2f675ccf44de Mon Sep 17 00:00:00 2001 From: Caio <117518+caiosba@users.noreply.github.com> Date: Mon, 21 Oct 2024 23:23:06 -0300 Subject: [PATCH] Ticket CV2-5389: Implementing 4 more data points --- lib/check_data_points.rb | 25 +++++++++++-------- lib/team_statistics.rb | 12 +++------ .../controllers/graphql_controller_11_test.rb | 2 +- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/check_data_points.rb b/lib/check_data_points.rb index 4350181f8..3498d80cc 100644 --- a/lib/check_data_points.rb +++ b/lib/check_data_points.rb @@ -78,26 +78,31 @@ def articles_sent(team_id, start_date, end_date) end # Average response time - def average_response_time(team_id, start_date, end_date) - TiplineRequest - .where(team_id: team_id, smooch_report_received_at: start_date.to_datetime.to_i..end_date.to_datetime.to_i) - .average("smooch_report_received_at - CAST(DATE_PART('EPOCH', created_at::timestamp) AS INTEGER)").to_f + def average_response_time(team_id, start_date, end_date, platform = nil, language = nil) + query = TiplineRequest.where(team_id: team_id, smooch_report_received_at: start_date.to_datetime.to_i..end_date.to_datetime.to_i) + query = query.where(platform: platform) unless platform.blank? + query = query.where(language: language) unless language.blank? + query.average("smooch_report_received_at - CAST(DATE_PART('EPOCH', created_at::timestamp) AS INTEGER)").to_f end # All users - def all_users(team_id, start_date, end_date) + def all_users(team_id, start_date, end_date, platform = nil, language = nil) start_date, end_date = parse_start_end_dates(start_date, end_date) - TiplineRequest.where(team_id: team_id, created_at: start_date..end_date) - .count('DISTINCT(tipline_user_uid)') + query = TiplineRequest.where(team_id: team_id, created_at: start_date..end_date) + query = query.where(platform: platform) unless platform.blank? + query = query.where(language: language) unless language.blank? + query.count('DISTINCT(tipline_user_uid)') end # Returning users - def returning_users(team_id, start_date, end_date) + def returning_users(team_id, start_date, end_date, platform = nil, language = nil) # Number of returning users (at least one session in the current month, and at least one session in the last previous 2 months) start_date, end_date = parse_start_end_dates(start_date, end_date) uids = TiplineRequest.where(team_id: team_id, created_at: start_date.ago(2.months)..start_date).map(&:tipline_user_uid).uniq - TiplineRequest.where(team_id: team_id, tipline_user_uid: uids, created_at: start_date..end_date) - .count('DISTINCT(tipline_user_uid)') + query = TiplineRequest.where(team_id: team_id, tipline_user_uid: uids, created_at: start_date..end_date) + query = query.where(platform: platform) unless platform.blank? + query = query.where(language: language) unless language.blank? + query.count('DISTINCT(tipline_user_uid)') end # New users diff --git a/lib/team_statistics.rb b/lib/team_statistics.rb index 175bb29d4..1bb5d34e8 100644 --- a/lib/team_statistics.rb +++ b/lib/team_statistics.rb @@ -133,24 +133,20 @@ def number_of_search_results_by_type data end - # TODO def average_response_time - 24.hours + CheckDataPoints.average_response_time(@team.id, @start_date, @end_date, @platform, @language) end - # TODO def number_of_unique_users - rand(1000) + number_of_total_users - number_of_returning_users end - # TODO def number_of_total_users - rand(1000) + CheckDataPoints.all_users(@team.id, @start_date_str, @end_date_str, @platform, @language) end - # TODO def number_of_returning_users - rand(1000) + CheckDataPoints.returning_users(@team.id, @start_date_str, @end_date_str, @platform, @language) end # TODO diff --git a/test/controllers/graphql_controller_11_test.rb b/test/controllers/graphql_controller_11_test.rb index 957e3ddef..554a152a1 100644 --- a/test/controllers/graphql_controller_11_test.rb +++ b/test/controllers/graphql_controller_11_test.rb @@ -210,7 +210,7 @@ def teardown query = <<~GRAPHQL query { team(slug: "#{team.slug}") { - statistics(period: "past_week") { + statistics(period: "past_week", platform: "whatsapp", language: "en") { number_of_articles_created_by_date number_of_articles_updated_by_date number_of_explainers_created