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.4.27 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.4 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.26 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.3 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.25 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.2 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.24 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.1 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.23 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.22 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.0 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.21 app/models/workarea/insights/top_categories.rb
workarea-core-3.5.0.beta.1 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.20 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.19 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.18 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.17 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.16 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.15 app/models/workarea/insights/top_categories.rb
workarea-core-3.4.14 app/models/workarea/insights/top_categories.rb