# frozen_string_literal: true

class Admin::DashboardController < Admin::ApplicationController
  def index
    @page_view_count = QueryBuilder.call(Event.where(event_name: :page_view).all, params).result.count
    @avg_time = QueryBuilder.call(
      Event.where(event_name: ["user_engagement", "page_view", "scroll"])
      .select("sum(engagement_time) / count(distinct session_id) as avg_engagement_time"),
      params
    ).result[0]["avg_engagement_time"].to_i / 1000

    @article_page_view_count = QueryBuilder.call(
      Event.where(event_name: "page_view").where("path like '/articles/%' or path like '/en/articles/%'"),
      params
      ).result.count

    @search_count = QueryBuilder.call(
      Event.where(event_name: "view_search_results"),
      params
      ).result.count

    @search_view_count = QueryBuilder.call(
      Event.where(event_name: "page_view").where("path like '/articles/%' or path like '/en/articles/%'").where("referrer like '%query%' or json_extract(request_params, '$.from_keyword') is not null"),
      params
      ).result.count

    @useful_count = QueryBuilder.call(
      Event.where(event_name: "useful"),
       params
      ).result.count
  end
end
