# frozen_string_literal: true

module Reports::WebCrawlers
  extend ActiveSupport::Concern

  class_methods do
    def report_web_crawlers(report)
      report.labels = [
        {
          type: :string,
          property: :user_agent,
          title: I18n.t('reports.web_crawlers.labels.user_agent')
        },
        {
          property: :count,
          type: :number,
          title: I18n.t('reports.web_crawlers.labels.page_views')
        }
      ]

      report.modes = [:table]

      report.data = WebCrawlerRequest.where('date >= ? and date <= ?', report.start_date, report.end_date)
        .limit(200)
        .order('sum_count DESC')
        .group(:user_agent).sum(:count)
        .map { |ua, count| { user_agent: ua, count: count } }
    end
  end
end