Sha256: caa4fe95eeabadf91d55ec85a11d936106e8b5f546742aad2dac2f512deb3f50

Contents?: true

Size: 1.27 KB

Versions: 62

Compression:

Stored size: 1.27 KB

Contents

module Workarea
  module Insights
    class TopCategories < Base
      class << self
        def dashboards
          %w(catalog)
        end

        def generate_monthly!
          results = generate_results
          create!(results: results) if results.present?
        end

        def generate_results
          total_revenue = find_total_revenue

          report
            .results
            .take(Workarea.config.insights_categories_list_max_results)
            .map do |result|
              percent_of_total = if total_revenue.zero?
                0
              else
                (result['revenue'] / total_revenue.to_f) * 100
              end

              result.merge(
                category_id: result['_id'],
                percent_of_total: percent_of_total
              )
            end
        end

        def report
          Reports::SalesByCategory.new(
            starts_at: beginning_of_last_month,
            ends_at: end_of_last_month,
            sort_by: 'revenue',
            sort_direction: 'desc'
          )
        end

        def find_total_revenue
          Metrics::SalesByDay
            .by_date_range(starts_at: beginning_of_last_month, ends_at: end_of_last_month)
            .sum(:revenue) || 0
        end
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.5.15 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.36 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.14 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.35 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.13 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.34 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.12 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.33 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.11 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.10 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.32 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.9 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.31 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.8 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.30 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.7 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.29 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.6 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.28 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.5 app/models/workarea/insights/top_categories.rb